2016-10-06 5 views
0
N=160; % No of Sample 
for k = 1 : N 
    dft(k) = 0; 
    for n=1: N 
    dft(k) = dft(k) + x(n) * exp(-1j*2*pi*(n-1)*(k-1)/N); 
    end 
end 

Перед реализации этого ДПФ, я должен был создать 160 образца синусоиду с 10 циклов с использованием следующего:Пользовательские Matlab ДПФ результат отличается от FFT

for n=1:160 
x(n) = sin(2*pi*10*n/160); 
end 

При использовании FFT():

результат xfft (2) является -1.6580e-15 + 9.8769e-15i

, но, в результате ДПФ (2) -1.2262e-15 + 9.5732e-15i

Результаты должны быть такими же, но я не могу понять, где проблема ....

Благодаря

+2

Результаты эквивалентны точности машины: см. [Это сообщение в блоге Лореном] (http://blogs.mathworks.com/loren/2006/08/23/a-glimpse-into-floating-point-accuracy/). –

+0

В общем, я сравниваю, являются ли два числа 'x' и' y' равными машинной точности следующим образом: 'areEqual = abs (x - y)/abs (x)

+0

Я просто думал, что они должны быть абсолютно одинаковыми. Но я согласен с вами, спасибо. – brotherofninth

ответ

0

по сравнению с амплитудой вашего синусоиды, все е-15 (или е-15i), по существу, ноль (числовой шум). Таким образом, 0 == 0, и ваши результаты ничем не отличаются.

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