应用butterworth过滤器后如何保存

时间:2015-09-07 10:34:48

标签: matlab

我正在接收音频文件并使用butterworth过滤器。过滤后我想将过滤后的文件重新保存到另一个名为z.wav的音频文件中。我怎么能这样做?

a=audioread('a.wav');

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

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

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

您尚未在任何地方应用过滤操作。 [B,A] = butter(200,0.9);为您提供滤镜系数。 a_filtered = filter(B,A,a);进行过滤。然后,您可以使用audiowrite('z.wav',a_filtered,44100);保存结果。