2017-06-12 54 views
0

在我的Matlab腳本中,我正在加載一個音頻信號,然後我要分解成n個不同的子帶(並對每個帶執行不同的操作)。將信號分解爲n個相同大小的子帶

舉個例子,假設我們有一個信號包含高達1KHz的頻率,我想將其分成n = 10個子帶。 (0-100Hz,100-200Hz,...,900-1Khz)。

我該如何去實現這樣的事情?在Matlab中是否有一些內置函數或一些外部Matlab庫可以實現類似的功能?

回答

1

您傅立葉變換信號。你會得到奈奎斯特頻率以上的鬼頻率,這是你可以用你的一半數據點表示的最高頻率。所以這給出了一個上限。您可以表示的最低頻率是直流偏置。

只需將您感興趣的頻段外的所有係數設置爲零,即可獲得子頻段。然後,您可以進行逆變換以恢復實際信號。

但是從您的帖子中可以明顯看出,您對信號沒有多少經驗,並且子帶可能不是您要查找的內容。如果想要轉換整個音頻波,則會遇到問題,因爲您必須在Windows中應用fft。這並不像我提出的那樣簡單。

+0

對,您提到的第一部分現在回到我身上。是的,將樂隊之外的係數設置爲零以外的任何特定樂隊感覺非常明顯,但是我怎麼實際上達到那麼少。例如,我如何去查找FFT:ed信號中的0-100 Hz頻段? –

+1

您需要設計一箇中通濾波器。搜索術語「有限脈衝響應濾波器」和縮寫「FIR」。 –

+0

好的,謝謝 - 現在正在研究一些帶通濾波器 - 感覺像是一個更好的解決方案。我猜FFT:如果我現在設法生成帶通濾波器,信號是多餘的,對嗎? –

相關問題