首页 > 解决方案 > 如何访问和标准化元胞数组元素(Matlab)

问题描述

我有一个元胞数组数据结构,我想标准化它的元素。如何将zscore或平均值和标准应用于每个单元格数组?我尝试执行以下操作,但不正确。下面的代码随机生成 50 组不同的数据,每组 1000 个元素。我什至尝试了以下cellfun(@(x)(x-mu)./sg,X,'UniformOutput',false)方法,但我无法计算单元结构的mu(平均值)和sg(标准偏差)。请帮忙。

for n  = 1: 50

   x=rand(1,1000);

    X(n)=  {x} ;


end

XV = zscore(X);

标签: matlabmatrixcellmean

解决方案


zscore是统计工具箱中的一个功能,我没有。文档说您可以使用该选项将其应用于标准化矩阵('all'注意这是 MATLAB R2018b 的新功能):

zscore(X,0,'all'); % won't work in versions of MATLAB before R2018b

如果你和我一样没有这个工具箱,它应该相当于:

(X - mean(X(:))) / std(X(:));

所以我们可以这样写一个匿名函数:

standardize = @(X)(X - mean(X(:))) / std(X(:));

或等效地

standardize = @(X)zscore(X,0,'all');

现在,您可以使用以下方法将此函数应用于数组中的所有矩阵cellfun

X = cell(5,3);
for ii=1:numel(X)
  X{ii} = rand(1,1000);
end
XV = cellfun(standardize,X,'UniformOutput',false);

推荐阅读