如何访问和标准化单元格数组元素(Matlab)

时间:2018-09-19 01:02:05

标签: matlab matrix cell mean

我有一个单元阵列数据结构,我想对其元素进行标准化。如何将zscore或均值和标准差应用于每个单元格数组?我尝试执行以下操作,但这是不正确的。下面的代码随机生成1000个元素中的50个不同的数据集。我什至尝试了以下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);

1 个答案:

答案 0 :(得分:1)

zscore是统计工具箱中的一个功能,我没有。 documentation说,您可以使用'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);