2013-07-22 216 views
3

我有一個已導入到MATLAB的wav文件,樣本頻率爲44.1 kHz。我正嘗試將此音頻文件重新採樣到22.05 kHz,然後將其恢復到44.1 kHz。然而,我對如何在MATLAB中使用resample函數感到困惑,如果這是我應該用來做這件事的功能。任何幫助將不勝感激。謝謝!在MATLAB中重新採樣音頻

+1

我不是一個matlab專家,但我相信這取決於你想要完成什麼。您可能想要解釋爲什麼要進行縮減採樣,然後再升級到您開始的位置。你可以希望以這種方式完成的唯一的事情就是降低你的信號。 –

+0

我這樣做的原因是我正在測試我的音頻水印的重新採樣的魯棒性。 – Math244

回答

7

是的,resample是你的功能。從44100赫茲下采樣x到22050赫茲:

y = resample(x,1,2); 

(即 「1」 和 「2」 的參數定義再取樣率:四萬四千百分之二萬二千零五十零= 1/2)

到上採樣回到44100赫茲:

x2 = resample(y,2,1); 

注意,resample功能包括必要的抗混疊(低通)濾波器。

正如您可能知道的那樣,「已恢復」信號x2已經丟失了可能在x中出現的最高頻率信息。

+3

或者如果其他人正在閱讀你的代碼,你可以使用'y = resample(x,22050,44100);'和'x2 = resample(y,44100,22050);' –

+0

謝謝,我已經添加了一個評論澄清, –

+0

由於下采樣是正好一半的速度,你也可以只是做'y = x(1:2:end)' –