我正在接收音频文件并使用butterworth过滤器。过滤后我想将过滤后的文件重新保存到另一个名为z.wav的音频文件中。我怎么能这样做?
a=audioread('a.wav');
[B,A] = butter(200,0.9);
audiowrite('z.wav',a,44100);
但是,上面的代码不起作用。它只保存a.wav
文件的副本。
答案 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);
请记住,你的巴特沃思有很高的秩序,它的幅度和阶段响应有点令人不安......你应该使用较低的订单。
答案 1 :(得分:0)
您尚未在任何地方应用过滤操作。 [B,A] = butter(200,0.9);
为您提供滤镜系数。 a_filtered = filter(B,A,a);
进行过滤。然后,您可以使用audiowrite('z.wav',a_filtered,44100);
保存结果。