Matlab中的负零

laz*_*ary 5 precision double matlab negative-number cross-correlation

基本上我想问两件事:

  1. 为什么会这样?(Matlab中的负零)
  2. 这是什么时候发生的?

我想出了这个.Octave与Matlab有一些相似之处,所以这个功能的用处很明显,但他们说的其中一个原因是它没有出现在默认输出中.我现在才解决它.那么,也许对此有新见解?

对于第二个问题,在我提到的已回答的问题中,他们只是说它可能在某些计算中发生,并且在我刚刚做的下面的计算中,似乎没有必要使用(或获得)负零.

我遇到的代码是:

xcorr([1 0 1 1], [0 1 1 0 0])
Run Code Online (Sandbox Code Playgroud)

它的输出是:

-0.0000   -0.0000    1.0000    1.0000    1.0000    2.0000    1.0000    0.0000    0.0000
Run Code Online (Sandbox Code Playgroud)

xcorr实际上是一个交叉核心功能,它只进行一些简单的操作,如求和和乘法,在这里可以找到确切的函数细节.无论如何,没有什么比" 复杂的分支切割和复杂平面的转换 "

谢谢

dro*_*rco 4

这些值不代表零。相反,它们是非常接近于零的负值。获取这些值而不仅仅是零的原因是由于函数实现中执行的近似。根据Matlab文档:“xcorr估计随机过程的互相关序列”

换句话说 - 屏幕上显示的值只是负值的近似值。

为了测试这一点,您可以更改Matlab的显示格式。

代码:

format shortE;
xcorr([1 0 1 1], [0 1 1 0 0])
Run Code Online (Sandbox Code Playgroud)

结果:

ans =

  Columns 1 through 5

 -6.2450e-017 -5.5511e-017  1.0000e+000  1.0000e+000  1.0000e+000

  Columns 6 through 9

  2.0000e+000  1.0000e+000  1.1102e-016  1.1796e-016
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,坐标 1、2、8 和 9 中的值实际上是负数。