2015-09-07 59 views
1

我正在接收音頻文件並應用butterworth濾波器。過濾後,我想重新保存過濾的文件到另一個名爲z.wav的音頻文件。我怎樣才能做到這一點 ?如何在應用butterworth濾波器後保存

a=audioread('a.wav'); 

[B,A] = butter(200,0.9); 

audiowrite('z.wav',a,44100); 

但是,上面的代碼不工作。它只保存a.wav文件的副本。

+1

您沒有在任何地方應用過濾器。 'a_filtered = filter(B,A,a);' 然後使用'audiowrite('z.wav',a_filtered,44100);' – schvaba986

+0

@ schvaba986發佈它作爲答案,因爲它是答案。 –

+0

@AnderBiguri你是對的 – schvaba986

回答

0

您沒有在任何地方應用過濾操作。 [B,A] = butter(200,0.9);爲您提供濾波器係數。 a_filtered = filter(B,A,a);進行過濾。然後你可以使用audiowrite('z.wav',a_filtered,44100);來保存結果。

3

首先,您必須使用filter函數或filtfilt過濾您的信號。其次在寫入文件之前,您應該對樣本進行歸一化處理。

你的代碼應該是這樣的:

[x, fs] = audioread('a.wav'); 

[b,a] = butter(200,0.9); 

y = filter(b,a,x); 

y = 0.99*y/max(abs(y)); 

audiowrite('z.wav', y, fs); 

請記住,你的巴特沃斯具有非常高的訂單,它的幅度和相位響應都有點「不安」 ......你一定要使用較低的訂單。

enter image description here

相關問題