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!