我有一个单元格数组数据结构,我想标准化它的元素。如何将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);