2017-07-26 197 views
0

我在Matlab中使用FFT計算我的信號的頻譜時缺少一些東西。 我的代碼:在Matlab上使用FFT計算和繪製信號的頻譜

​​

你會這麼好心來告訴我,我搞砸了?

我試圖檢查是否algorythm工程,並使用相同的信號的這兩個取樣(相同的採樣頻率;在兩個不同的時間範圍0-10和0-100):

fs=1000; 
time10 = [0:1/fs:10]; 
time100 = [0:1/fs:100]; 
data10 = sin(2*pi*0.23 .*time10)+cos(2*pi*12 .*time10); 
data100 = sin(2*pi*0.23 .*time100)+cos(2*pi*12 .*time100); 

我想在兩個圖譜應supperpose但他們不...至於這裏看到:https://www.dropbox.com/s/wfols9o409pr94u/FFT_spectrum_StackOverflow.png?dl=0 https://www.dropbox.com/s/a8vmzwto6x4130w/FFT_spectrum_StackOverflow.fig?dl=0

感謝

+1

對於第一個示例,您可以解釋爲什麼您認爲這不起作用(顯示日誌錯誤或照片)。而對於第二個例子,你可以上傳一張照片,顯示兩個spophtrum根本沒有supperpose。 –

+1

而對於第二個例子,這兩個頻譜不能疊加使用,因爲在'data'中隱含的矩形窗口不相同。 –

+1

這段代碼或多或少與MathWorks提供的代碼相同。我沒有看到你「搞砸了」的地方。你能解釋爲什麼你認爲這是不正確的嗎? – rayryeng

回答

2

好消息是,有什麼不對您通過頻譜計算其小精靈。

問題是,通過查看不同長度的樣本,您可以完全查看兩個不同的樣本。 在時域中,它們可以被看作是無限長的正弦曲線與不同長度的矩形窗口相乘的結果。

在頻域中,無限長連續時間正弦信號的頻譜與矩形窗口的頻譜進行卷積。對於不同的窗口長度,這些窗口的相應頻譜具有不同的寬度(對於較長的矩形窗口,較窄的頻譜)。結果,無限長正弦信號頻譜中的尖峯將分散在不同的帶寬上。這正是你所看到的。