2012-01-03 4 views
0

У меня есть другой вопрос. Совсем аналогично тому, что я уже спросил (и получил большую помощь - еще раз спасибо). К сожалению, решение из другой темы здесь не работает: (http://stackoverflow.com/questions/8680909/fft-in-matlab-and-numpy-scipy-give-different-results)ifft in matlab и numpy дают разные результаты

сейчас это составляет около 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). то результаты те же. Не может быть проблема точности? Но тогда - почему результаты значительно отличаются? возможно, у кого-то есть идея, как решить проблему?

+0

Возможный дубликат [FFT в Matlab и numpy/scipy дают разные результаты] (http://stackoverflow.com/questions/8680909/fft-in-matlab-and-numpy-scipy-give-different-results) –

+0

Вы заметили, что два вопроса были заданы одним и тем же пользователем? ;) –

+0

Это не дубликат. как я сказал во введении, решение из этой темы здесь не применяется. – Chris

ответ

6

Если вы посмотрите на свои значения, исходя из вашей оценки numpy, то они очень маленький (менее 10^-15). Я бы предположил, что это проблема точности, и ваши результаты не такие разные, как на первый взгляд.

+0

@Nzbuu спасибо за исправление моей неловкой ошибки. – aganders3

3

X.XXe-16 по существу равен нулю по сравнению с 1.2247. Оператор печати, вероятно, округляет все числа гораздо большим количеством.

Так что ваши результаты не отличаются, для всех практических целей.

 Смежные вопросы

  • Нет связанных вопросов^_^