Matlab 获取向量,该向量为';s的平均值是任意向量的零

Matlab 获取向量,该向量为';s的平均值是任意向量的零,matlab,numerical-computing,Matlab,Numerical Computing,正如我所知,要从给定向量中得到零平均向量,我们应该从该向量的每个成员中减去给定向量的平均值 r=rand(1,6) 我们得到 0.8687 0.0844 0.3998 0.2599 0.8001 0.4314 让我们通过以下操作创建另一个向量s s=r-mean(r(:)); 在这之后,我们得到 0.3947 -0.3896 -0.0743 -0.2142 0.3260 -0.0426 如果我们用下面的公式计算s的平均值 mea

正如我所知,要从给定向量中得到零平均向量,我们应该从该向量的每个成员中减去给定向量的平均值

r=rand(1,6)
我们得到

0.8687    0.0844    0.3998    0.2599    0.8001    0.4314
让我们通过以下操作创建另一个向量s

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的微小偏差是由于舍入误差造成的?对于exmaple,当我们创建白噪声或此类随机不相关的数据序列时,实际上已经假设,即使对于远离0的如此小的数据,它的平均值为零,假设在这种情况下,例如在这种情况下

  -5.5511e-017 =0 ?

大约当然,e-017表示10乘以-17的幂(10^-17),但这个数字仍然非常小,假设为0。如果你打字

format long;

您将看到Matlab使用的实际精度,实际上您可以参考eps命令。虽然matlab使用了双精度编码,可以将数字编码到
2.2251e-308
,但精度取决于数字的大小

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


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

实际上,它只输出16位精度。实际精度取决于matlab使用的数据类型(通常为双精度)。