巴特沃斯、切比雪夫Ⅰ型、切比雪夫Ⅱ型、椭圆滤波器代码

1.	% %% 巴特沃斯带通滤波器
2.	% %设计带通滤波器
3.	% %巴特沃斯、切比雪夫I型、切比雪夫II型、椭圆型滤波器
4.	% %wp和ws分别是通带和阻带的频率(截止频率)。当wp和ws为二元矢量时,为带通或带阻滤波器,这时求出的Wn也是二元矢量;当wp和ws为一元矢量时,为低通或高通滤波器:当wp<ws时为低通滤波器,当wp>ws时为高通滤波器。
5.	% %wp和ws为二元矢量
6.	wp=0.6 ;                %设置通带频率
7.	ws=0.8;                %设置阻带频率
8.	Rp=1;                                   %设置通带波纹系数
9.	Rs=20;                                  %设置阻带波纹系数        
10.	%巴特沃斯滤波器设计
11.	[N,Wn]=buttord(wp,ws,Rp,Rs,'s');        %求巴特沃斯滤波器阶数,输出参数N代表满足设计要求的滤波器的最小阶数,Wn是等效低通滤波器的截止频率
12.	%无论是高通、带通和带阻滤波器,在设计中最终都等效于一个截止频率为Wn的低通滤波器(我现在也不是很理解为啥是这样,毕竟我也是刚接触滤波器)
13.	fprintf('巴特沃斯滤波器 N= %4d\n',N);    %显示滤波器阶数
14.	[b,a]=butter(N,Wn,'s');               %求巴特沃斯滤波器系数,即求传输函数的分子和分母的系数向量
15.	W=0:0.01:2;                             %设置模拟频率
16.	[Hb,wb]=freqs(b,a,W);                 %求巴特沃斯滤波器频率响应
17.	plot(wb/pi,20*log10(abs(Hb)),'b');      %作图
18.	hold on
19.	%切比雪夫I型滤波器设计
20.	[N,Wn]=cheb1ord(wp,ws,Rp,Rs,'s');       %求切比雪夫I型滤波器阶数
21.	fprintf('切比雪夫I型滤波器 N= %4d\n',N); %显示滤波器阶数
22.	[bc1,ac1]=cheby1(N,Rp,Wn,'s');          %求切比雪夫I型滤波器系数,即求传输函数的分子和分母的系数向量
23.	[Hc1,wc1]=freqs(bc1,ac1,W);             %求切比雪夫I型滤波器频率响应
24.	plot(wc1/pi,20*log10(abs(Hc1)),'k');    %作图
25.	%切比雪夫II型滤波器设计
26.	[N,Wn]=cheb2ord(wp,ws,Rp,Rs,'s');       %求切比雪夫II型滤波器阶数
27.	fprintf('切比雪夫II型滤波器 N= %4d\n',N);%显示滤波器阶数
28.	[bc2,ac2]=cheby2(N,Rs,Wn,'s');          %求切比雪夫II型滤波器系数,即求传输函数的分子和分母的系数向量
29.	[Hc2,wc2]=freqs(bc2,ac2,W);             %求切比雪夫II型滤波器频率响应
30.	plot(wc2/pi,20*log10(abs(Hc2)),'r');    %作图
31.	%椭圆型滤波器设计
32.	[N,Wn]=ellipord(wp,ws,Rp,Rs,'s');       %求椭圆型滤波器阶数
33.	fprintf('椭圆型滤波器 N= %4d\n',N);      %显示滤波器阶数
34.	[be,ae]=ellip(N,Rp,Rs,Wn,'s');          %求椭圆型滤波器系数,即求传输函数的分子和分母的系数向量
35.	[He,we]=freqs(be,ae,W);                 %求椭圆型滤波器频率响应
36.	%作图
37.	plot(we/pi,20*log10(abs(He)),'g');
38.	axis([0 max(we/pi) -30 2]);
39.	legend('巴特沃斯滤波器','切比雪夫I型滤波器','切比雪夫II型滤波器','椭圆型滤波器');
40.	xlabel('角频率{\omega}/{\pi}');
41.	ylabel('幅值/dB');
42.	line([0 max(we/pi)],[-20 -20],'color','k','linestyle','--');%在画布上画线
43.	line([0 max(we/pi)],[-1 -1],'color','k','linestyle','--');
44.	line([0.2 0.2],[-30 2],'color','k','linestyle','--');
45.	line([0.3 0.3],[-30 2],'color','k','linestyle','--');

 

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值