You are now following this question
- You will see updates in your followed content feed.
- You may receive emails, depending on your communication preferences.
I want to get FFT from my .mat data that have been saved in workspace. I have a timeseries data.>> t.mat (time) & data.mat (magnitude). I want to have a continuous plot for FFT .what must I do? can anyone help me? Thank you very much.
8 views (last 30 days)
Show older comments
get fft from discrete data>> time and magnitude that have been saved as .mat file in workspace. How can I do that???
Accepted Answer
Rick Rosson
on 27 Jul 2014
doc load
doc fft
doc fftshift
doc abs
doc plot
14 Comments
vahid torabi
on 27 Jul 2014
Edited: vahid torabi
on 27 Jul 2014
Thank you for answering,could you please expand your answer in more details sir?
Image Analyst
on 27 Jul 2014
Edited: Image Analyst
on 27 Jul 2014
Rick knows what an FT is - he doesn't need an image like that to explain it. He was wondering if you attempted anything like
mySpectrum = fft(mysignal);
plot(real(mySpectrum), 'b-');
or anything like that. (Sounds like you have not attempted anything yet.) Have you tried to adapt the demo/example code in the help for fft() to your signal yet???
vahid torabi
on 27 Jul 2014
I didn't want to make Rick sad,I just wanted to clarify what I'm gonna do.Sorry anyway. I've tried very codes to reach that FFT plot but I didn't. So now I'm very eager to know what is yours.Thank you very much.
Image Analyst
on 27 Jul 2014
I gave you code, as did the help documentation. Did you see his comment "What have you tried so far?" We can't see it unless you copy it from your MATLAB script and paste it here, or else attach your m-file with the paper clip icon. Also supply data in addition to the code so we have something to run it on.
Rick Rosson
on 27 Jul 2014
Image Analyst is right. Please post your MATLAB code here so we can see what you have tried and then we can possibly help you.
vahid torabi
on 27 Jul 2014
Edited: vahid torabi
on 27 Jul 2014
these are my files. I've attached them. my code:
n = length(magnitude);
Ts = t(2)-t(1); % sample time
Fs = 1/Ts; % sampling frequency
NFFT = 2^nextpow2(n); % Next power of 2 from length of magnitude
Y = fft(magnitude,NFFT)/n;
f = Fs/2*linspace(0,1,NFFT/2+1);
% Plot single-sided amplitude spectrum.
plot(f,2*abs(Y(1:NFFT/2+1)))
title('Single-Sided Amplitude Spectrum of y(t)')
xlabel('Frequency (Hz)')
ylabel('|Y(f)|')
Rick Rosson
on 27 Jul 2014
Your code looks pretty good. Do you have any specific questions? Does your code work as expected? Are you getting any errors?
vahid torabi
on 28 Jul 2014
I don't get any error.but the plot is not the thing I wanted to be! have you tried plotting with my files that I attached for you?
Rick Rosson
on 28 Jul 2014
Edited: Rick Rosson
on 28 Jul 2014
Please add the following line of code at the very end of the script:
xlim([0 200e3]);
Also, try replacing the plot statement with:
plot(f,20*log10(abs(Y(1:NFFT/2+1))));
Label the y axis as:
ylabel('|Y(f)| (dB)')
Finally, in the line that computes the fft, instead of dividing by n, please divide by NFFT.
Does that help?
vahid torabi
on 28 Jul 2014
It worked.My special thanks goes to you sir.I really appreciate your help.I admire you for your tips.Wish you luck.
vahid torabi
on 7 Aug 2014
Hi back Mr.Rick. I attached a zip file that has the results. my plot starts at -80 but in article it starts at almost 0.why??? could you please help me sir??? thank you very much.
More Answers (0)
See Also
Categories
Find more on Fourier Analysis and Filtering in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!An Error Occurred
Unable to complete the action because of changes made to the page. Reload the page to see its updated state.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)
Asia Pacific
- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本Japanese (日本語)
- 한국Korean (한국어)