Finding the dominant frequency of a time series data using fft

9 visualizaciones (últimos 30 días)
Armindo
Armindo el 2 de Mayo de 2016
Comentada: Luis Omar el 8 de Jul. de 2020
% Hi can anyone explain me why using this two procedures I get two diferent dominant frequencies for the same signal? % Note: the data can be downloaded from here: http://www.filedropper.com/data_21
s = load('data.mat'); % load the data
Signal= s.data;
Fs = 60;
t = 0: 1/Fs:length(Signal)/Fs-(1/Fs);
% plot data
subplot(3,1,1); plot(t,Signal,'m');
xlabel('Time','FontWeight','bold','FontSize',10)
ylabel('Amplitude','FontWeight','bold','FontSize',10)
%%Procedure 1
N = length(Signal);
Signal = Signal - mean(Signal); % to remove the frequency at 0 (or D-C offset)
sigFFT = (abs(fft(Signal)).^2);
bin_vals = 0 : N-1;
fax_Hz = bin_vals*Fs/N;
N_2 = ceil(N/2);
power = sigFFT(1:N_2); % get magnitude
freq = fax_Hz(1:N_2); % get freq in Hz
subplot(3,1,2); plot(freq,power,'k')
xlabel('Frequency (Hz)','FontWeight','bold','FontSize',10)
ylabel('Power','FontWeight','bold','FontSize',10)
xlim([0 35]); title('Periodogram')
%%Procedure 2
%(obtained from here: http://www.mathworks.com/matlabcentral/answers/183642-finding-the-dominant-frequency-of-a-time-series-data-using-fft-matlab)
x = Signal - mean(Signal);
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
subplot(3,1,3);
plot(f_scale, y),axis('tight'),grid('on'),title('Dominant Frequency')
xlim([0 35]);
But insted of this if I use this signals below I get the same results between procedure 1 and 2
Fs =500; % sample frequency
f1 = 3; f2 = 13; f3 = 30; % frequency
theta =0; % phase shift
A0 =0; % offset
A = 1; % amplitude
t = 0: 1/Fs:1 -(1*1/Fs); % time
Sig1 = A0 + A*sin(2*pi*f1*t + theta);
Sig2 = A0 + A*cos(2*pi*f2*t + theta) ;
Sig3 = A0 + A*sin(2*pi*f3*t + theta);
SignalSum = Sig1 + Sig2 + Sig3;
  1 comentario
Luis Omar
Luis Omar el 8 de Jul. de 2020
fft works better when the total number of the N-points is multiple of power of 2^n like 1024, 512, 2048 etc

Iniciar sesión para comentar.

Respuestas (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by