How to compute the fourier transform for a signal u(t) over frequency band [-10,10]?
2 ビュー (過去 30 日間)
古いコメントを表示
I have a signal u(t) already defined, but I need to compute the fft and plot the magnitude and phase of the fourier transform. HOW DO I DO THIS?
I TRIED FFT(U,[-10,10]), BUT DOESN'T WORK.
0 件のコメント
回答 (3 件)
Dr. Seis
2012 年 1 月 14 日
Say you have the following:
N = 1024; % Number of samples
dt = 0.01; % Seconds per sample
u_time = randn(1,N);
Then, you would have:
Nyquist = 1/(2*dt);
df = 1 / (N*dt);
f = -Nyquist : df : Nyquist-df;
U_freq = fftshift(fft(u_time));
And you can plot this data between -10 and 10 Hertz by:
figure;
plot(f , abs(U_freq)*dt, 'b-'); hold on;
plot(f , angle(U_freq),'r-'); hold off;
xlim([-10 10]);
legend('magnitude','phase');
However, the above formulation assumes that your data are even. I would go further and try to pad your time data with zeros to next power of 2 (i.e., above is 2^10). Let me know if you have questions about doing that.
0 件のコメント
Walter Roberson
2012 年 1 月 13 日
freqs = fft(U);
plot(real(freqs),'b*-');
hold on
plot(imag(freqs),'r+:');
4 件のコメント
Honglei Chen
2012 年 1 月 13 日
Depending on your sampling rate and the number of points in your signal, you may want to also explore the following function
doc goertzel
doc czt
0 件のコメント
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!