2010-05-28 165 views
1

我想在MATLAB中使用fft來分析保存爲excell文件的一些exprimental數據。 我的代碼:MATLAB中的FFT:錯誤的0Hz頻率

A=xlsread('Book.xls'); G=A'; x=G(2, :); 
N=length(x); 
F=[-N/2:N/2-1]/N; 
X = abs(fft(x-mean(x),N)) 
X = fftshift(X); 
plot(F,X) 

但它繪製了大錯爲0Hz分量的圖,我的真實頻率是大約的395Hz,它沒有在繪製的圖所示。 請告訴我什麼是錯的。

任何幫助,將不勝感激。

+1

這將是很好看的截圖或使book.xls提供給我們。 – MatlabDoug 2010-05-28 15:27:30

+0

對不起,我無法找到附加文件在這裏。然而我上傳了它: http://ifile.it/547kdag (請求下載票) 第一列對應於時間,第二列是我想要從fft發出的數據。 非常感謝提前。 – roujhan 2010-05-28 15:40:03

回答

8

假設我們從文件中讀取信號:

G = xlsread('Book.xls'); 
t = G(:,1); 
x = G(:,2); 
N = length(x); 

首先我們估計從時間軸上的取樣頻率,並生成頻率向量:

Fs = 1 ./ abs(t(2)-t(1)); 
F = (-N/2:N/2-1)*Fs/N; 

然後計算FFT和情節:

X = abs(fft(x-mean(x),N)); 
X = fftshift(X); 
stem(F,X) 

終於找到峯值和相應的頻率:

>> [~,ind] = max(X); 
>> F(ind) 
ans = 
     -400 

您可能希望縮小在原點附近,看東西更清楚:

xlim([-1000 1000]) 
+0

+1:謝謝你提供了一個很好的例子 – 2010-05-28 18:54:32

+0

不錯。有用。非常感謝你的明確答案。 – roujhan 2010-05-29 03:18:39