matlab和numpy中的ifft给出了不同的结果

2024-04-19 20:15:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我还有一个问题。很像我已经问过的另一个(得到了很大的帮助-再次感谢)。不幸的是,另一个线程的解决方案在这里不起作用: (http://stackoverflow.com/questions/8680909/fft-in-matlab-and-numpy-scipy-give-different-results)在

现在是关于ifft的:

  # i have an array 'aaa' of shape (6,) such as:
  for i in aaa:  print i
  ...

 (1.22474487139+0j)
 (-0.612372435696-1.06066017178j)
 (-0.612372435696+1.06066017178j)
 (1.22474487139+0j)
 (-0.612372435696-1.06066017178j)
 (-0.612372435696+1.06066017178j)

  #when i perform np.ifft the result is:
 np.fft.ifft(aaa)

 array([  1.48029737e-16 +1.48029737e-16j,
    -8.26024733e-17 -1.72464044e-16j,
     1.22474487e+00 -3.94508649e-16j,
     3.70074342e-17 -2.96059473e-16j,
    -2.22044605e-16 +2.46478913e-16j,   4.55950391e-17 +4.68523518e-16j])

  ###################################################################
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  % BUT IN MATLAB 
  % the same array...

  aaa =

  1.2247          
 -0.6124 - 1.0607i
 -0.6124 + 1.0607i
  1.2247          
 -0.6124 - 1.0607i
 -0.6124 + 1.0607i

 % ...gives the result:
 ifft(aaa)

 ans =

  -0.0000
        0
   1.2247
        0
        0
        0

我做了一些实数的实验,比如范围(1,6)。结果是一样的。 可能是精度问题吗?但是,为什么结果会有如此显著的差异呢?也许有人知道如何解决这个问题?在


Tags: theinfftcomhttpnpresult解决方案
2条回答

与1.2247相比,X.XXe-16基本上为零。print语句可能会将所有数字舍入一个更大的数量。在

所以你的结果没有什么不同,就所有的实际目的而言。在

如果你看一下你的numpy评估值,它们非常小(小于10^-15)。我认为这是一个精度问题,你的结果并不像第一眼看到的那样不同。在

相关问题 更多 >