Finding the dominant frequency of a time series data using fft matlab
Show older comments
I'm trying to determine the dominant frequency of a time series data using the fft function in matlab. my data is represented as a vector while my time scale is also a vector. Below is my sample code:
Fs = 10; % sampling frequency 1 kHz
t = [0,10,20,30,40,50,60,70,80,90]; % time scale
x = [10,120,130,120,120,100,123,456,78,89]; % time series
plot(t,x), axis('tight'), grid('on'), title('Time series'), figure
nfft = 512; % next larger power of 2
y = fft(x,nfft); % Fast Fourier Transform
y = abs(y.^2); % raw power spectrum density
y = y(1:1+nfft/2); % half-spectrum
[v,k] = max(y); % find maximum
f_scale = (0:nfft/2)* Fs/nfft; % frequency scale
plot(f_scale, y),axis('tight'),grid('on'),title('Dominant Frequency')
fest = f_scale(k); % dominant frequency estimate
fprintf('Dominant freq.: true %f Hz, estimated %f Hznn', f, fest)
fprintf('Frequency step (resolution) = %f Hznn', f_scale(2))
The problem is that my dominant frequency here is 0 which am not quite sure if it is correct. Could some provide feedback on this please especially if the Fs matters alot in this case!
4 Comments
SANJAY KUMAR
on 18 Feb 2022
what is 'f'
Walter Roberson
on 18 Feb 2022
f is additional information not shown here, that gives information about what the true frequency of the signal is.
Mehdi
on 7 Aug 2024
hi guys. I have a question. I have a time series of data and using the FFT, I have found the dominant frequencies. FFT sohws me some frequencies that have high power. However, I know that some of thos frequencies are wrong. I mean my periodic time series does not contain all frequencies that are shown by FFT. Just some of them. is there any way to choose exactly the correct frequencies?
thank you
Star Strider
on 7 Aug 2024
@Mehdi — Be sure that you are plotting a one-sided Fourier transform and using a frequency vector that is appropriate for it.
Accepted Answer
More Answers (1)
Eric Marshal
on 4 May 2017
0 votes
hello mr. David Gureya, may i ask you how you get 512 as NFFT ? are the n(number) from time series is diffrent with NFFT ?
Categories
Find more on Spectral Measurements 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!