• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

matlab设计模拟带通滤波器

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

简单记录下在matlab上如何设计出模拟的带通滤波器,包括:巴特沃斯滤波器、切比雪夫I型滤波器、切比雪夫II型滤波器、椭圆型滤波器。
代码如下:

%设计带通滤波器
%巴特沃斯、切比雪夫I型、切比雪夫II型、椭圆型滤波器


clear all;

%wp和ws分别是通带和阻带的频率(截止频率)。当wp和ws为二元矢量时,为带通或带阻滤波器,这时求出的Wn也是二元矢量;当wp和ws为一元矢量时,为低通或高通滤波器:当wp<ws时为低通滤波器,当wp>ws时为高通滤波器。

%wp和ws为二元矢量
wp=[0.1*2*pi 0.15*2*pi]; %设置通带频率
ws=[0.05*2*pi 0.2*2*pi]; %设置阻带频率

Rp=1; %设置通带波纹系数
Rs=20; %设置阻带波纹系数

%巴特沃斯滤波器设计
[N,Wn]=buttord(wp,ws,Rp,Rs,\'s\'); %求巴特沃斯滤波器阶数,输出参数N代表满足设计要求的滤波器的最小阶数,Wn是等效低通滤波器的截止频率
%无论是高通、带通和带阻滤波器,在设计中最终都等效于一个截止频率为Wn的低通滤波器(我现在也不是很理解为啥是这样,毕竟我也是刚接触滤波器)
fprintf(\'巴特沃斯滤波器 N= %4d\n\',N); %显示滤波器阶数
[bb,ab]=butter(N,Wn,\'s\'); %求巴特沃斯滤波器系数,即求传输函数的分子和分母的系数向量
W=0:0.01:2; %设置模拟频率
[Hb,wb]=freqs(bb,ab,W); %求巴特沃斯滤波器频率响应
plot(wb/pi,20*log10(abs(Hb)),\'b\'); %作图
hold on

%切比雪夫I型滤波器设计
[N,Wn]=cheb1ord(wp,ws,Rp,Rs,\'s\'); %求切比雪夫I型滤波器阶数
fprintf(\'切比雪夫I型滤波器 N= %4d\n\',N); %显示滤波器阶数
[bc1,ac1]=cheby1(N,Rp,Wn,\'s\'); %求切比雪夫I型滤波器系数,即求传输函数的分子和分母的系数向量
[Hc1,wc1]=freqs(bc1,ac1,W); %求切比雪夫I型滤波器频率响应
plot(wc1/pi,20*log10(abs(Hc1)),\'k\'); %作图

%切比雪夫II型滤波器设计
[N,Wn]=cheb2ord(wp,ws,Rp,Rs,\'s\'); %求切比雪夫II型滤波器阶数
fprintf(\'切比雪夫II型滤波器 N= %4d\n\',N);%显示滤波器阶数
[bc2,ac2]=cheby2(N,Rs,Wn,\'s\'); %求切比雪夫II型滤波器系数,即求传输函数的分子和分母的系数向量
[Hc2,wc2]=freqs(bc2,ac2,W); %求切比雪夫II型滤波器频率响应
plot(wc2/pi,20*log10(abs(Hc2)),\'r\'); %作图

%椭圆型滤波器设计
[N,Wn]=ellipord(wp,ws,Rp,Rs,\'s\'); %求椭圆型滤波器阶数
fprintf(\'椭圆型滤波器 N= %4d\n\',N); %显示滤波器阶数
[be,ae]=ellip(N,Rp,Rs,Wn,\'s\'); %求椭圆型滤波器系数,即求传输函数的分子和分母的系数向量
[He,we]=freqs(be,ae,W); %求椭圆型滤波器频率响应
%作图
plot(we/pi,20*log10(abs(He)),\'g\');
axis([0 max(we/pi) -30 2]);
legend(\'巴特沃斯滤波器\',\'切比雪夫I型滤波器\',\'切比雪夫II型滤波器\',\'椭圆型滤波器\');
xlabel(\'角频率{\omega}/{\pi}\');
ylabel(\'幅值/dB\');
line([0 max(we/pi)],[-20 -20],\'color\',\'k\',\'linestyle\',\'--\');%在画布上画线
line([0 max(we/pi)],[-1 -1],\'color\',\'k\',\'linestyle\',\'--\');
line([0.2 0.2],[-30 2],\'color\',\'k\',\'linestyle\',\'--\');
line([0.3 0.3],[-30 2],\'color\',\'k\',\'linestyle\',\'--\');

运行结果如下:

巴特沃斯滤波器 N= 4
切比雪夫I型滤波器 N= 3
切比雪夫II型滤波器 N= 3
椭圆型滤波器 N= 2

 

 注:
1、求各种滤波器的传输函数的分子和分母向量系数的函数,例如:

[bc1,ac1]=cheby1(N,Rp,Wn,\'s\'); %求切比雪夫I型滤波器系数,即求传输函数的分子和分母的系数向量

这里的函数cheby1()中的参数为

cheby1(N,Rp,Wn,\'type\',\'s\');

其中注意’type’可为高通:\'high’或带阻:‘stop’,如果不填的话,默认是低通或者带通,至于是低通还是带通,主要看你前面的wp和ws是二元矢量还是一元矢量:二元矢量对应带通,一元矢量对应低通。

2、matlab中的line()函数简单介绍:
https://blog.csdn.net/qq_36554582/article/details/83352155
————————————————
版权声明:本文为CSDN博主「逸凌123」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_36554582/article/details/83350837


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
actixrustactor框架学习一基本试用发布时间:2022-07-18
下一篇:
grpc,protoc,protoc-gen-go,rustprotobuffer、gRPC、restfulgRPC的相互转化发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap