2016-08-23 88 views
0

我有時間序列數據。我使用matlab對它進行了fft:主導頻率時間序列

ft=fft(data); 

我們如何得到主導頻率。我嘗試了ft的最大值,但它似乎是錯誤的。我們怎樣才能獲得主導頻率

+0

需要您的數據的採樣率來找到主導頻率。 – KKS

+0

我的數據採樣率是1 – user6460588

+0

你的意思是你的數據採樣頻率是1Hz? – KKS

回答

1

您需要採取複雜的FFT輸出的幅度並找到峯:

ft=fft(data); 
mag_ft = abs(ft); % take magnitude of FFT complex output values 
+0

在我的代碼中,我需要計算1 /占主導地位的頻率。使用上面的代碼,我得到最大頻率1783.4,使1/1783.4非常小。是否可以,如果我將fft標準化爲ft = fft(data)/ length(data)?它是否會妨礙結果,以負方式 – user6460588

+0

如果您只想查找最大峯值的*頻率*,則無論是否將量值歸一化都沒有區別,因爲您只是將所有量值按相同的常數值進行縮放。峯值仍將處於相同的頻率。 –

0

首先,頻率軸將需要找到自己的FFT數據的頻率。由於您的採樣率僅爲1,因此您可以檢查的最大頻率爲0.5 Hz。

dt=1; % your time step 

N=length(data); % data length 

df=1/(dt*N); %frequency bin 

f_axis=(0:N-1)*df; % frequency axis 

然後,用頻率軸繪製您的fft數據。

ft=fft(data); 
plot(f_axis,abs(ft));