错误的标准和平均值然后预期

时间:2017-02-18 09:26:44

标签: matlab

我有一个包含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值?
  • 我对于预聚类算法规范化的值是否足够好?

1 个答案:

答案 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,有一些浮点错误。