我有一个包含3列的矩阵X
。对于问题的漏洞X=randn(5,3)
。
我想规范X
S.T.的列。每列的平均值为0
,标准为1
。我使用以下代码:
X=(X-mean(X))./std(X);
我得到了1
的标准。不过,我的意思是接近0
但非必要0
的非常小的值。我试着用数字玩一下来找一个解释:
X=1:15;
X=reshape(X,[5 3]);
mean(X-mean(X));
每列给出0
值。
X=1:15;
X=reshape(X,[5 3]);
mean((X-mean(X))./std(X));
哪个没有。但是0 /任何东西仍然是0.我错过了什么?
0
值?答案 0 :(得分:3)
这是一个版本,我认为你正在尝试做...你需要复制矩阵因为X-mean(X)无效(如果你使用的是标准实现) - 你不能从5x3中减去1x3。
r = 5; c = 3;
X=randn(r,c);
Xm=repmat(mean(X),r,1);
Xstd = repmat(std(X),r,1);
Xn = (X-Xm)./Xstd;
mean(Xn)
std(Xn)
对我来说这打印出来
ans =
1.0e-16 *
-0.6661 0 0.4441
ans =
1.0000 1.0000 1.0000
这看起来就像你正在寻找的......注意平均值的1e-16乘数...这基本上是0,有一些浮点错误。