我正在尝试采用矩阵并将每个单元格中的值标准化为该列的平均值。通过标准化,我的意思是从该列的平均值中减去每个单元格中的值,即从 Column1 中的值中减去 Column1 的平均值...从 ColumnN 中的值中减去 ColumnN 的平均值。我正在寻找 Matlab 中的脚本。谢谢!
问问题
6957 次
4 回答
3
尝试初学者的均值函数。将矩阵传递给它将导致所有列被平均并返回一个行向量。
接下来,您需要减去平均值。为此,矩阵必须具有相同的大小,因此请在平均行向量上使用 repmat。
a=rand(10);
abar=mean(a);
abar=repmat(abar,size(a,1),1);
anorm=a-abar;
或单线:
anorm=a-repmat(mean(a),size(a,1),1);
于 2010-08-03T18:55:14.320 回答
1
% Assuming your matrix is in A
m = mean(A);
A_norm = A - repmat(m,size(A,1),1)
于 2010-08-03T19:01:17.647 回答
1
正如已经指出的那样,您将需要该mean
函数,该函数在没有任何附加参数的情况下调用时会给出输入中每一列的平均值。然后会出现一个轻微的复杂情况,因为您不能简单地减去平均值——它的维度与原始矩阵不同。
所以试试这个:
a = magic(4)
b = a - repmat(mean(a),[size(a,1) 1]) % subtract columnwise mean from elements in a
repmat
复制平均值以匹配数据维度。
于 2010-08-03T19:03:29.463 回答