你们好,最近小未来发现有诸多的小伙伴们对于iir滤波器是什么意思,iir滤波器这个问题都颇为感兴趣的,今天小活为大家梳理了下,一起往下看看吧。
1、滤波器的设计过程,滤波器设计方法一般有三种:
2、(1)简单滤波器零级点位置累试法
3、(2)利用模拟滤波器设计IIR数字滤波器
4、(3)利用最优化技术方法来设计数字滤波器
5、 常见的经典法设计滤波器主要有4种,巴特沃斯滤波器,切比雪夫I型滤波器,切比雪夫II型滤波器,椭圆滤波器。
6、巴特沃斯滤波器设计
7、巴特沃斯滤波器可以用于设计低通、高通、带通、带阻滤波器,其设计方法如下:
8、(1)得到滤波器最小滤波器阶数和截止频率,调用buttord函数,其调用格式如下:
9、[n,wn]=buttord(Wp,Ws,Rp,Rs);Wp,Ws分别表示归一化通带截至频率和归一化阻带截至频率,Rp,Rs分别表示通带和阻带的波纹系数
10、巴特沃斯各种滤波器设计对应的Wp,Ws的对应的规则不同
11、高通滤波器:Wp,Ws都是一元矢量,Wp>Ws
12、低通滤波器:Wp,Ws都是一元矢量,Wp<Ws
13、带通滤波器:Wp,Ws都是二元矢量,Wp<Ws
14、带阻滤波器:Wp,Ws都是二元矢量,Wp>Ws
15、(2)计算滤波器的系数,调用butter函数,调用格式如下:
16、[z,p,k]=butterap(n);
17、[b,a]=butter(n,Wn,’ftype’);
18、n表示滤波器阶数,Wn归一化截至频率,ftype:滤波器类型,z:零点,p:极点,k:增益,b,a表示滤波器系数
19、示例:对含有20HZ和50HZ频率叠加谐波信号的低通滤波,使其只含有20HZ频率
20、对应的m文件程序如下:
21、 Fs=250;
22、 T=1/Fs;
23、 L=500;
24、 N=0:L-1;
25、 t=T*N;
26、 f1=20;
27、 f2=50;
28、 x=sin(2*pi*f1*t)+sin(2*pi*f2*t);
29、 subplot(2,3,1)
30、 plot(t,x,'r')
31、 title('原始信号');
32、 xlabel('t/s');
33、 ylabel('幅值');
34、 Ndata=2^nextpow2(L);
35、 y=fft(x,Ndata)*2/Ndata;
36、 f=Fs*(0:Ndata-1)/Ndata;
37、 subplot(2,3,2)
38、 plot(f(1:Ndata/2),abs(y(1:Ndata/2)),'b');
39、 title('原始信号频谱图');
40、 xlabel('频率/HZ');
41、 ylabel('幅值');
42、%%巴特沃斯低通滤波器设计%%
43、 Wp=30/Fs;
44、 Ws=100/Fs;
45、 Rs=50;
46、 Rp=1;
47、 [n,Wn]=buttord(Wp,Ws,Rp,Rs);
48、 [b,a]=butter(n,Wn);
49、 [h,f]=freqz(b,a);
50、 f=Fs*(0:length(f)-1)/length(f);%%频率转化%%
51、 subplot(2,3,3)
52、 plot(f(1:length(f)/2),abs(h(1:length(f)/2)));
53、 title('巴特沃斯滤波器设计')
54、 xlabel('频率/HZ');
55、 ylabel('幅值');
56、%%对原始信号进行滤波%%
57、 x2=filter(b,a,x);
58、 subplot(2,3,4)
59、 plot(t,x2);
60、 title('滤波后信号');
61、 y2=fft(x2,Ndata)*2/Ndata;
62、 f=Fs*(0:Ndata-1)/Ndata;
63、 xlabel('t/s');
64、 ylabel('幅值');
65、 subplot(2,3,5)
66、 plot(f(1:Ndata/2),abs(y2(1:Ndata/2)))
67、 title('滤波后信号频谱图');
68、 xlabel('频率/HZ');
69、 ylabel('幅值');
70、程序运行结果如下:
71、切比雪夫I型滤波器设计
72、(1)得到滤波器最小滤波器阶数和截止频率,调用cheb1ord函数,其调用格式如下:
73、[n,wn]=cheb1ord(Wp,Ws,Rp,Rs);Wp,Ws分别表示归一化通带截至频率和归一化阻带截至频率,Rp,Rs分别表示通带和阻带的波纹系数
74、(2)计算滤波器的系数,调用cheby1函数,调用格式如下:
75、[b,a]=cheby1(n,Rp,Wn,’ftype’);
76、n表示滤波器阶数,Wn归一化截至频率,Rp表示通带波纹系数,ftype:滤波器类型,b,a表示滤波器系数
77、示例:采样频率为1000HZ,通带内(0-30HZ)波动不超过2dB,在120HZ处至少衰减50dB,设计切比雪夫I型滤波器
78、编写对应m文件如下:
79、 Fs=1000;
80、 Wp=30/Fs;
81、 Ws=120/Fs;
82、 Rp=2;
83、 Rs=50;
84、 [n,Wn]=cheb1ord(Wp,Ws,Rp,Rs);
85、 [b,a]=cheby1(n,Rp,Wn);
86、 [h,f]=freqz(b,a,512,Fs);
87、 f=Fs*(0:length(f)-1)/length(f);
88、 subplot(2,1,1)
89、 plot(f(1:length(f)/2),20*log(abs(h(1:length(f)/2))));
90、 title('切比雪夫I型低通滤波器');
91、 xlabel('频率/HZ');
92、 ylabel('幅值/dB');
93、 grid on;
94、 subplot(2,1,2)
95、 plot(f(1:length(f)/2),phase(h(1:length(f)/2))*180/pi);
96、 xlabel('频率/HZ');
97、 ylabel('相位/度');
98、 grid on;
99、程序运行结果如下图:
100、切比雪夫II型滤波器设计
101、(1)得到滤波器最小滤波器阶数和截止频率,调用cheb2ord函数,其调用格式如下:
102、[n,wn]=cheb2ord(Wp,Ws,Rp,Rs);Wp,Ws分别表示归一化通带截至频率和归一化阻带截至频率,Rp,Rs分别表示通带和阻带的波纹系数
103、(2)计算滤波器的系数,调用cheby1函数,调用格式如下:
104、[b,a]=cheby2(n,Rs,Wn,’ftype’);
105、n表示滤波器阶数,Wn归一化截至频率,Rs表示阻带波纹系数,ftype:滤波器类型,b,a表示滤波器系数
106、示例:采样频率为1000HZ,通带内(0-30HZ)波动不超过2dB,在120HZ处至少衰减50dB,设计切比雪夫II型滤波器
107、编写对应m文件如下:
108、 Fs=1000;
109、 Wp=30/Fs;
110、 Ws=120/Fs;
111、 Rp=2;
112、 Rs=50;
113、 [n,Wn]=cheb2ord(Wp,Ws,Rp,Rs);
114、 [b,a]=cheby2(n,Rs,Wn);
115、 [h,f]=freqz(b,a,512,Fs);
116、 f=Fs*(0:length(f)-1)/length(f);
117、 subplot(2,1,1)
118、 plot(f(1:length(f)/2),20*log(abs(h(1:length(f)/2))));
119、 title('切比雪夫II型低通滤波器');
120、 xlabel('频率/HZ');
121、 ylabel('幅值/dB');
122、 grid on;
123、 subplot(2,1,2)
124、 plot(f(1:length(f)/2),phase(h(1:length(f)/2))*180/pi);
125、 xlabel('频率/HZ');
126、 ylabel('相位/度');
127、 grid on;
128、 程序运行结果如下图:
129、椭圆滤波器设计
130、(1)得到滤波器最小滤波器阶数和截止频率,调用ellipord函数,其调用格式如下:
131、[n,wn]=ellipord(Wp,Ws,Rp,Rs);Wp,Ws分别表示归一化通带截至频率和归一化阻带截至频率,Rp,Rs分别表示通带和阻带的波纹系数
132、(2)计算滤波器的系数,调用cheby1函数,调用格式如下:
133、[b,a]=ellip(n,Rp,Rs,Wn,’ftype’);
134、n表示滤波器阶数,Wn归一化截至频率,ftype:滤波器类型,b,a表示滤波器系数
135、示例:采样频率为1000HZ,通带内(0-30HZ)波动不超过2dB,在120HZ处至少衰减50dB,设计椭圆滤波器
136、编写对应m文件如下:
137、 Fs=1000;
138、 Wp=30/Fs;
139、 Ws=120/Fs;
140、 Rp=2;
141、 Rs=50;
142、 [n,Wn]=ellipord(Wp,Ws,Rp,Rs);
143、 [b,a]=ellip(n,Rp,Rs,Wn);
144、 [h,f]=freqz(b,a,512,Fs);
145、 f=Fs*(0:length(f)-1)/length(f);
146、 subplot(2,1,1)
147、 plot(f(1:length(f)/2),20*log(abs(h(1:length(f)/2))));
148、 title('椭圆低通滤波器');
149、 xlabel('频率/HZ');
150、 ylabel('幅值/dB');
151、 grid on;
152、 subplot(2,1,2)
153、 plot(f(1:length(f)/2),phase(h(1:length(f)/2))*180/pi);
154、 xlabel('频率/HZ');
155、 ylabel('相位/度');
156、 grid on;
157、程序运行结果如下图:
158、直接法IIR滤波器设计
159、 直接法滤波器设计是直接针对滤波器频率响应进行设计,实现直接法滤波器设计函数为yulewalk,其调用格式如下:
160、 [b,a]=yulewalk(n,f,m);
161、其中,f为归一化频率点数,m为频率点处响应,两者长度一致
162、示例:设计一个5阶低通滤波器,并将其频率响应函数与设计目标响应做对比
163、编写对应m文件如下:
164、 f=[0 0.2 0.4 0.6 0.8 1];
165、 m=[1 1 1 1 0 0];
166、 [b,a]=yulewalk(5,f,m);
167、 [h,w]=freqz(b,a,256);
168、 plot(f,m,'r',w/pi,abs(h),'b');
169、 legend('设计目标响应','滤波器响应');
170、程序运行结果如下图:
以上就是iir滤波器这篇文章的一些介绍,希望对大家有所帮助。