傅里葉分解允許您採取任何時間函數,並將其描述爲每個具有不同幅度和頻率的正弦波之和。但是,如果您想使用DFT來解決這個問題,則需要確保在頻域中有足夠的分辨率來區分不同的頻率。一旦你有了,你可以確定哪些頻率在信號中占主導地位,並創建一個由與這些頻率相對應的多個正弦波組成的信號。您說的正確的是,採樣頻率爲44.1 kHz,只能看到256個採樣,在這256個採樣中能夠檢測到的最低頻率是172 Hz的頻率。
獲得足夠的解決方案在頻域中:「僅在某些頻率,基本頻率的倍數」爲頻率
振幅值,是真對傅立葉分解,而不是DFT,這將有一個頻率分辨率一定的增量。 DFT的頻率分辨率與用於計算DFT的時域信號的採樣率和採樣數有關。降低頻率間隔可以讓您更好地區分靠近在一起的兩個頻率,這可以通過兩種方式來完成;
- 降低採樣率,但這會使週期性重複頻率更接近。 (請記住NyQuist定理)
- 增加用於計算DFT的樣本數。如果只有256個樣本可用,那麼可以執行「零填充」,其中將0值樣本附加到數據的末尾,但對此有一些影響需要考慮。
如何得出這樣一個結論:
如果你描繪出不同的音頻信號的頻率內容爲單個圖,你會發現,幅度不同升技。這是因爲單個信號的聲音不完全相同,並且任何信號(來自周圍環境和硬件本身)總是存在固有的噪聲。因此,您想要做的是取兩個或更多個DFT信號的平均值以消除噪聲並獲得更準確的頻率成分表示。根據您的應用程序,如果您捕捉的聲音隨着時間的推移而快速變化(例如語音或音樂),則這可能無法實現。因此,平均值僅適用於所有要平均的信號在聲音上幾乎相等(單獨的單獨記錄「同一事物」)。爲了澄清,例如,從四個時域信號中,您需要創建四個頻域信號(使用DFT方法),然後計算四個頻域信號的平均值爲單個平均頻域信號。這將消除噪音,並更好地表示音頻中固有的頻率。
的替代解決方案:
如果你知道你的信號應該包含一定數量的主頻率(不要太多),這些是唯一你是有趣的,那麼我建議你使用Pisarenko的諧波分解(PHD)或多重信號分類(MUSIC,很好的縮寫!)來找到這些頻率(及其相應的幅度值)。這與DFT相比計算密度較低。例如。如果您知道信號包含3個主頻率,Pisarenko會返回這三個頻率值,但請記住DFT揭示了更多信息,讓您得出更多結論。
這或多或少是正確的,但請注意,重疊FFT以便獲得更多頻率更加頻繁的時變頻譜「快照」是很常見的做法。 –
@PaulR,這就是我連接的維基百科文章所要求的STFT,不是嗎? –
STFT不一定重疊 - 「ST」部分僅意味着「短期」,因爲您將DFT/FFT應用於連續的數據塊(可能會或可能不會重疊),而不是單個大塊整個數據集的DFT/FFT。所以你已經在上面的前兩段中描述了STFT,或多或少。 –