【问题标题】:get vector which's mean is zero from arbitrary vector从任意向量中获取平均值为零的向量
【发布时间】:2013-03-29 05:50:08
【问题描述】:

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

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)

我们得到
答案=

 -5.5511e-017 

其实我查过这个数字很小

     -5.5511*exp(-017)

ans =

 -2.2981e-007

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

  -5.5511e-017 =0 ?

当然

【问题讨论】:

    标签: matlab numerical-computing


    【解决方案1】:

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

    format long;
    

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

    【讨论】:

    • 实际上只输出到 16 位精度。真正的精度取决于 matlab 使用的数据类型(通常是双精度)。
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-20
      相关资源
      最近更新 更多