2014-02-20 3 views
0

Это мой код:Matlab и дискретного преобразования Фурье

T  
    F = 1/T      
    y 
    L = length(y) 
    Y=fft(y); 
    f=(0:F:(L-1)*F) 
    plot(f, Y) 

Т время выборки (с его значением), F является частота и у является дискретным сигналом. Является ли это правильным способом вычисления DFT с помощью Matlab? Я не передал F или T функции, поэтому я не уверен, соответствуют ли результаты Y их соответствующим множественным частотам F, сохраненным в f.

ответ

0
F = 1/T 
L = length(y) 

t = linspace(0,L/F,L); 
NFFT = 2^nextpow2(L); 
f = F/2*linspace(0,1,NFFT/2+1); 

fft_y = fft(y, NFFT)/L; 

magnitude_y = = 2*abs(fft_y(1:NFFT/2+1)); 

plot(f, magnitude_y); 

Это правильный путь.

+0

спасибо. Зачем вам нужно? – user3290180

+0

't' - это временной вектор вашего сигнала во временной области. Вам нужно это, если вы хотите построить его -> 'plot (t, y);' – SamuelNLP

+0

Хорошо, вы сказали, что на всякий случай, я знаю, но для получения спектра мне это не нужно. Еще раз спасибо. – user3290180

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