从任意向量得到平均值为零的向量

时间:2013-03-29 05:50:09

标签: matlab numerical-computing

正如我所知,从给定向量得到零均值向量,我们应该从该向量的每个成员中减去给定向量的均值。例如,让我们看下面的例子

r=rand(1,6)

我们得到了

0.8687    0.0844    0.3998    0.2599    0.8001    0.4314

让我们按照操作

创建另一个向量
s=r-mean(r(:));

之后我们得到

 0.3947   -0.3896   -0.0743   -0.2142    0.3260   -0.0426 

如果我们通过以下公式计算s的平均值

  mean(s)
我们得到了                 ans =

 -5.5511e-017 

实际上我已经检查过这个数字非常小

     -5.5511*exp(-017)

ans =

 -2.2981e-007

所以我们应该认为我们的向量具有平均值零?所以这意味着当我们创建白噪声或者这种类型的随机不相关数据序列时,与0的小偏差是因为舍入误差?实际上它已经假设即使对于远离0的这样小的数据,它也没有均值,并且在这种情况下假设例如对于这种情况

  -5.5511e-017 =0 ?

当然大致

2 个答案:

答案 0 :(得分:1)

e-017表示10到-17(10 ^ -17)的幂,但数字仍然非常小,假设它是0.如果你输入

format long;

您将看到Matlab使用的真实精度

答案 1 :(得分:1)

实际上你可以参考eps命令。虽然matlab使用double来编码低至2.2251e-308的数字,但是精确度是确定数字的大小。

eps(number)格式使用它 - 它告诉你最低有效位的影响有多大。

在我的机器上,例如。 eps(0.3)会返回5.5511e-17 - 正好是您报告的数字。