1

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

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 ?

大约当然

4

2 回答 2

1

e-017 表示 10 的 -17 (10^-17) 次方,但这个数字仍然非常小,假设它是 0。如果你输入

format long;

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

于 2013-03-29T05:57:21.823 回答
1

其实你可以参考 eps 命令。尽管 matlab 使用 double 可以将数字编码到精确到2.2251e-308确定数字的大小。

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

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

于 2013-03-29T10:10:55.273 回答