matlab 画iir滤波器单位脉冲响应
时间: 2023-05-18 13:00:54 浏览: 213
画iir(无限脉冲响应)滤波器的单位脉冲响应,在Matlab中有多种方法,如使用built-in函数或自己编写程序。
使用built-in函数可以使用稳态工厂函数'filter()',该函数可以用于设计各种类型的IIR和FIR滤波器。以一个IIR低通滤波器为例,使用以下代码可以获取单位脉冲响应:
b = [0.25, 0.5, 0.25]; % filter系数的分子
a = [1, -0.5]; % filter系数的分母
h = impz(b, a); % 求单位脉冲响应
plot(h) % 画出单位脉冲响应
这里的b和a是IIR滤波器的系数,h是得到的单位脉冲响应,它是滤波器的响应,符合脉冲响应的性质:该滤波器的响应在其它信号与单位脉冲的卷积中出现。
如果自己编写程序进行画图则可以选择用difference equation去构造IIR滤波器,项目如下:
sampling_rate=10e3; % sampling rate
fc=2e3; % cutoff frequency
Q=1/sqrt(2); % quality factor
T=1/sampling_rate; % sampling time
t=0:T:1-T; % time index
wn=fc/(sampling_rate/2); % normalized frequency
den=[1,2*Q*wn,wn^2]; % denominator coefficients
num=[0,1,0]; % numerator coefficients
x=[1,zeros(1,length(t)-1)]; % impulsive input
y=filter(num,den,x); % impulsive response
subplot(2,1,1);plot(t,x); title('Impulsive input');grid on;
subplot(2,1,2);plot(t,y); title('Impulsive response');grid on;
在该程序里,用到了Difference equation去构造IIR滤波器,num和den是滤波器的系数。不过要注意:这种方式不是很方便调整的,而且很容易出现不稳定性和奇异点等问题,所以不建议使用。
综上所述,Matlab画IIR滤波器单位脉冲响应的方法相对简单。可以采用built-in函数或自己编写程序。
阅读全文