2013-10-01 86 views
0

我試圖做一些使用音頻文件(鋼琴錄音)的信號處理 我找到了音符起始點,然後對每個起始點執行FFT。但是我發現對於某些筆記而言,他們的二次諧波的幅度比他的基本幅度更大......爲什麼? 如何消除這一點並獲得正確的頻率?使用MATLAB的信號處理

回答

1

首先使用低通濾波器修剪掉一些高次諧波。如果您正在嘗試處理的鋼琴錄音錄製在3個八度範圍內,那應該會有很大幫助。

接下來,嘗試調整您的波幅。以下是一篇文章,討論諧波失真如何降低信號,以及如何交換信噪比以消除諧波失真。

http://www.mathworks.com/help/signal/examples/analyzing-harmonic-distortion.html

如果你想要更多的無信號濾波的家庭建造的解決方案,這是我想嘗試,假設最大信號幅度相當於要麼根本,二次諧波或三次諧波 1 )找到最大信號的頻率f 2)如果f/2或f/3處的信號遠大於本底噪聲,則稱該頻率爲基本值

或者, 1)找到頻率f最大信號 2)在區間[f/2,2 * f]上面搜索並找到峯值neare st f。 3)假設f和最接近的峯值之間的差值是基頻1。

您需要將這些方法適用於您的數據。 確保您的數據不僅表現出奇數次諧波或具有非常強的高次諧波。如果同時播放多個音符,這些方法將無法正常工作。

您也可以嘗試更正您的數據以獲取人耳敏感度,因爲這可能是FFT的二次諧波比耳朵檢測到的基頻相對更大的原因。見http://en.wikipedia.org/wiki/Absolute_threshold_of_hearing