Matlab - 绘制过滤后的音频

时间:2016-11-13 19:15:32

标签: matlab audio fft transformation

我正在尝试绘制过滤后的音频,但我做错了,因为第二个情节没有显示任何内容。

[wave,fs]=wavread('my-audio.wav');
t=0:1/fs:(length(wave)-1)/fs;
figure(1);plot(t,wave);
b = [1.1 1];
a = [-0.1 0 1];
FIR = filter(b,a,wave);
figure(2);plot(t,FIR);

我正在使用的功能是:H(z)=(z + 1.1)/(z^2 - 0.1)

我错过了什么?

谢谢!

1 个答案:

答案 0 :(得分:3)

看起来你已经颠倒了ab向量中系数的顺序。对于定义传递函数的极点的反馈系数a来说,反转系数的阶数特别显着(因此确定滤波器的稳定性)。因此,生成的过滤输出FIR可能超过数值浮点容量,plot遇到问题。

根据filter's documentationab系数是使用transfer function of the form定义的:

H(z) = \frac{b(1) + b(2)z^{-1} + \dots + b(n)z^{-n}}{a(1) + a(2)z^{-1} + \dots + a(m)z^{-m}}

由于您的传输功能是

\begin{align}H(z) &= \frac{z + 1.1}{z^2 - 0.1} \  &= \frac{z^{-1} + 1.1z^{-2}}{1 - 0.1z^{-2}}\end{align}

你应该使用系数

b = [0  1  1.1]
a = [1  0 -0.1]