实验五 基于MATLAB的IIR数字滤波器设计 一、实验目的:
1. 加深对IIR数字滤波器常用指标的理解; 2. 学会设计IIR数字滤波器;
3. 根据指标要求设计数字滤波器,并进行信号的处理。
二、实验原理:
补充:(1)filter函数用来实现数字滤波器对数据的滤波,函数调用格式为: y=filter(b,a,x)
其中,b,a分别为滤波器系统函数H(z)的分子和分母多项式的系数,x为滤波器的输入,y为滤波器的输出,y与x具有相同大小的向量。
(2)filtfilt函数实现零相位前后与后向结合滤波,其调用格式为:
y=filtfilt(b,a,x)
其中,b,a分别为滤波器系统函数H(z)的分子和分母多项式的系数,x为滤波器的输入,y为滤波器的输出,y与x具有相同大小的向量,这个函数实现的滤波后其输出信号与输入信号的相位一致,也就是没有改变信号波形形状。但filter函数滤波后有一些延迟,改变了
信号的形状。
三、作业:
1. 假设一个信号x(t)= sin(2*pi*f1*t)+0.5cos(2*pi*f2*t),其中f1=5Hz ,f2=30Hz。请设计
一个数字滤波器能把f2滤除掉,请写出程序,并画出原信号波形以及原信号通过该数字滤波器后输出信号的波形。 MATLAB程序如下:
f1=5;f2=30; dt=1/100; t=0:dt:1;
x=sin(2*pi*f1*t)+0.5*cos(2*pi*f2*t); Wp=0.2*pi;Ws=0.3*pi; Ap=1;As=10; Fs=100; wp=Wp*Fs; ws=Ws*Fs;
N=buttord(wp,ws,Ap,As,'s'); wc=wp/(10^(0.1*Ap)-1)^(1/2/N); [a1,b1]=butter(N,wc,'s'); [a2,b2]=impinvar(a1,b1,Fs); y=filter(a2,b2,x);
plot(t,x) % plot(t,y)
原图形的波形图如下:
1.510.50-0.5-1-1.500.20.40.60.81
经滤波后的波形图如下:
10.80.60.40.20-0.2-0.4-0.6-0.8-100.20.40.60.81