如何访问和标准化单元数组元素(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);

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);

最新更新