Matlab 访问向量-倍频程值时的不便

Matlab 访问向量-倍频程值时的不便,matlab,octave,Matlab,Octave,我在访问八度向量的元素时遇到问题: >> den = [1 2 1 2] >> poles = roots(den) >> poles = -2.00000 + 0.00000i 0.00000 + 1.00000i 0.00000 - 1.00000i >> poles(2) ans = 4.1633e-016 + 1.0000e+000i 它不返回0+1i,而是返回4.1633e-016+1.0000e+000i。为什么?

我在访问八度向量的元素时遇到问题:

>> den = [1 2 1 2]
>> poles = roots(den)
>> poles =

  -2.00000 + 0.00000i
   0.00000 + 1.00000i
   0.00000 - 1.00000i
>> poles(2)
ans = 4.1633e-016 + 1.0000e+000i
它不返回0+1i,而是返回4.1633e-016+1.0000e+000i。为什么?


如何解决这个问题?

您在第一个结果中看到的是正确的。显示精度高达5位精度。在第二次调用中,查看结果是以科学的格式呈现的,所以您可以在有限的呈现格式中看到您所看到的内容的真正价值


我应该提到,有时候你会得到一个非常小的值,也就是零,但是由于计算中的一些错误,你得到了一个非常小的值,而不是零。您可以在编写代码之前使用
格式long E
,以获得详细的科学格式的结果。

好的,我理解。我该怎么解决呢?你不想解决任何问题!这是一个精确的介绍。您可以使用
格式长E
接收所需内容。请阅读此常见问题解答条目