巴特沃斯滤波器、切比雪夫、椭圆滤波

滤波器概述

滤波器的作用就是过滤波形,过滤掉不需要的波形成分,与在时间上截取某一部分波形相区别,这个波形成分一般用频率来描述,也可以用模拟角频率核数字角频率来描述。从滤波器的通带范围可以分为低通、高通、带通和带阻滤波器;从滤波器可以处理的信号来看可以分为模拟滤波器和数字滤波器;实际运用中,模拟滤波器在物理上可用电阻、电容等元件搭建电路实现,数字滤波器一般通过处理器用算法实现。

巴特沃斯滤波器

巴特沃斯滤波器函数介绍:
在Matlab命令窗口输入doc buttord 和 doc butter可以知道:

1.buttord函数:生成巴特沃斯滤波器的阶次N和截止频率Wc

截止频率Wc:幅度响应衰减为原来的0.707时的频率点,衰减大小为3db
阶次N:阶次越高,在截止频率两侧衰减越快,滤波器越复杂,成本越高
[N,Wc]=buttord(Wp,Rp,Rs,‘s’);有参数’s’时,表示生成巴特沃斯模拟滤波器的参数,此时,Wp、Ws和Wc表示模拟角频率

2.butter函数:设计巴特沃斯滤波器

[b,a]=butter(N,Wc,‘low’,‘s’);有参数’s’时,返回N阶低通模拟巴特沃斯滤波器的传递函数系数,b为系统函数分子系数,a为系统函数分母系数,Wc为截止模拟角频率,其中的’low’可以替换成’bandpass’、‘high’、'stop’,分别表示带通、高通、带阻滤波器

3.freqs函数:模拟滤波器的频率响应

[h,w]=freqs(b,a,n);计算频率模拟滤波器的频率响应,b为系统函数分子系数,a为系统函数分母系数,n为频率点数,如果不指定n,n取默认值200

%matlab设计巴特沃斯模拟滤波器
%通带截止频率:fp(单位Hz)
%通带衰减:Rp(单位dB)
%阻带截止频率:fs(单位Hz)
%阻带衰减:Rs(单位dB)
 
%技术指标要求设置,按自己需求更改即可
fp=1900;fs=2200;%低通示例,理想截止频率2000Hz左右
%fp=5100;fs=4800;%高通示例  理想截止频率5000Hz左右
%fp=[1100,1900];fs=[900,2100];%带通示例 理想上限截止频率2000Hz,下限截止频率1000Hz
%fp=[900,2100];fs=[1100,1900];%带阻示例 理想上限截止频率2000Hz,下限截止频率1000Hz
Rp=1;Rs=40; 
% fm=10000; %信号频率最大值,单位Hz
filter_type=1;%1:低通,2:高通,3:带通,4:带阻
 
Wp=2*pi*fp;Ws=2*pi*fs;    %转换为模拟角频率,单位rad/s
%滤波器的阶数:N
%衰减3dB时的截止频率:Wc(单位rad/s)
%b:系统函数的分子
%a:系统函数的分母
[N,Wc]=buttord(Wp,Ws,Rp,Rs,'s');%计算巴特沃斯模拟滤波器参数,‘s’表示Wp和Ws都是模拟角频率
switch filter_type
    case 1
        [b,a]=butter(N,Wc,'low','s');%设计巴特沃斯低通滤波器
    case 2
        [b,a]=butter(N,Wc,'high','s');%设计巴特沃斯高通滤波器
    case 3
        [b,a]=butter(N,Wc,'bandpass','s');%设计巴特沃斯带通滤波器
    case 4
        [b,a]=butter(N,Wc,'stop','s');%设计巴特沃斯带阻滤波器
end
[H,W]=freqs(b,a);%W:模拟角频率,H:模拟滤波器的系统函数
mag=abs(H);%幅度
pha=angle(H);%相位
db=20*log10((mag+eps)/max(mag));%转换为分贝
f=W/(2*pi);%将模拟角频率转为Hz
subplot(2,1,1);plot(f,db);
title('模拟滤波器幅频曲线');xlabel('频率(Hz)');ylabel('幅度(dB)');
subplot(2,1,2);plot(f,pha);
title('模拟滤波器相频曲线');xlabel('频率(Hz)');ylabel('相位(rad)');

程序运行结果
在这里插入图片描述
在这里插入图片描述

切比雪夫滤波器

切比雪夫有两种类型,类型1只在通带有波纹起伏,类型2只在阻带有波纹起伏,其程序设计完全不一样,只需将主要函数名及相应参数更改即可,值得注意的是,cheby1的参数有通带衰减大小Rp,cheby2的参数有阻带衰减大小Rs,

切比雪夫1型模拟滤波器

1.che1ord函数
[N,Wc]=cheb1ord(Wp,Ws,Rp,Rs,‘s’);%计算切比雪夫1模拟滤波器参数,‘s’表示Wp和Ws都是模拟角频率
2、cheby1函数
[b,a]=cheby1(N,Rp,Wp,‘low’,‘s’);%设计切比雪夫1低通滤波器,其中的‘low’可以替换成’bandpass’、‘high’、‘stop’,分别表示带通、高通、带阻滤波器

%matlab设计切比雪夫1模拟滤波器
%通带截止频率:fp(单位Hz)
%通带衰减:Rp(单位dB)
%阻带截止频率:fs(单位Hz)
%阻带衰减:Rs(单位dB)
 
fp=1900;fs=2200;%低通示例,理想截止频率2000Hz左右
%fp=5100;fs=4800;%高通示例  理想截止频率5000Hz左右
%fp=[1100,1900];fs=[900,2100];%带通示例 理想上限截止频率2000Hz,下限截止频率1000Hz
%fp=[900,2100];fs=[1100,1900];%带阻示例 理想上限截止频率2000Hz,下限截止频率1000Hz
Rp=1;Rs=40; 
fm=8000; %信号频率最大值,单位Hz
filter_type=1;%1:低通,2:高通,3:带通,4:带阻
 
Wp=2*pi*fp;Ws=2*pi*fs;    %转换为模拟角频率,单位rad/s
%滤波器的阶数:N
%衰减3dB时的截止频率:Wc(单位rad/s)
%b:系统函数的分子
%a:系统函数的分母
[N,Wc]=cheb1ord(Wp,Ws,Rp,Rs,'s');%计算切比雪夫模拟滤波器参数,‘s’表示Wp和Ws都是模拟角频率
switch filter_type
    case 1
        [b,a]=cheby1(N,Rp,Wp,'low','s');%设计切比雪夫1低通滤波器
    case 2
        [b,a]=cheby1(N,Rp,Wp,'high','s');%设计切比雪夫1高通滤波器
    case 3
        [b,a]=cheby1(N,Rp,Wp,'bandpass','s');%设计切比雪夫1带通滤波器
    case 4
        [b,a]=cheby1(N,Rp,Wp,'stop','s');%设计切比雪夫1带阻滤波器
end
[H,W]=freqs(b,a);%W:模拟角频率,H:模拟滤波器的系统函数
mag=abs(H);%幅度
pha=angle(H);%相位
db=20*log10((mag+eps)/max(mag));%转换为分贝
f=W/(2*pi);%将模拟角频率转为Hz
subplot(2,1,1);plot(f,db);
title('模拟滤波器幅频曲线');xlabel('频率(Hz)');ylabel('幅度(dB)');
axis([0 fm -80 5]); %坐标范围调整
subplot(2,1,2);plot(f,pha);
title('模拟滤波器相频曲线');xlabel('频率(Hz)');ylabel('相位(rad)');
axis([0 fm -4 4]); %坐标范围调整

程序运行结果如下:
在这里插入图片描述
在这里插入图片描述
切比雪夫2型模拟滤波器

1、cheb2ord函数
[N,Wc]=cheb1ord(Wp,Ws,Rp,Rs,‘s’);%计算切比雪夫2模拟滤波器参数,‘s’表示Wp和Ws都是模拟角频率
2、cheby2函数
[b,a]=cheby2(N,Rs,Wp,‘low’,‘s’);%设计切比雪夫2低通滤波器,其中的‘low’可以替换成’bandpass’、‘high’、‘stop’,分别表示带通、高通、带阻滤波器

%设计切比雪夫2模拟滤波器
%通带截止频率:fp(单位Hz)
%通带衰减:Rp(单位dB)
%阻带截止频率:fs(单位Hz)
%阻带衰减:Rs(单位dB)
 
fp=1900;fs=2200;%低通示例,理想截止频率2000Hz左右
%fp=5100;fs=4800;%高通示例  理想截止频率5000Hz左右
%fp=[1100,1900];fs=[900,2100];%带通示例 理想上限截止频率2000Hz,下限截止频率1000Hz
%fp=[900,2100];fs=[1100,1900];%带阻示例 理想上限截止频率2000Hz,下限截止频率1000Hz
Rp=1;Rs=40; 
fm=12000; %信号频率最大值,单位Hz
filter_type=1;%1:低通,2:高通,3:带通,4:带阻
 
Wp=2*pi*fp;Ws=2*pi*fs;    %转换为模拟角频率,单位rad/s
%滤波器的阶数:N
%衰减3dB时的截止频率:Wc(单位rad/s)
%b:系统函数的分子
%a:系统函数的分母
[N,Wc]=cheb2ord(Wp,Ws,Rp,Rs,'s');%计算切比雪夫模拟滤波器参数,‘s’表示Wp和Ws都是模拟角频率
switch filter_type
    case 1
        [b,a]=cheby2(N,Rs,Wp,'low','s');%设计切比雪夫2低通滤波器
    case 2
        [b,a]=cheby2(N,Rs,Wp,'high','s');%设计切比雪夫2高通滤波器
    case 3
        [b,a]=cheby2(N,Rs,Wp,'bandpass','s');%设计切比雪夫2带通滤波器
    case 4
        [b,a]=cheby2(N,Rs,Wp,'stop','s');%设计切比雪夫2带阻滤波器
end
[H,W]=freqs(b,a);%W:模拟角频率,H:模拟滤波器的系统函数
mag=abs(H);%幅度
pha=angle(H);%相位
db=20*log10((mag+eps)/max(mag));%转换为分贝
f=W/(2*pi);%将模拟角频率转为Hz
subplot(2,1,1);plot(f,db);
title('模拟滤波器幅频曲线');xlabel('频率(Hz)');ylabel('幅度(dB)');
axis([0 fm -80 5]); %坐标范围调整
subplot(2,1,2);plot(f,pha);
title('模拟滤波器相频曲线');xlabel('频率(Hz)');ylabel('相位(rad)');
axis([0 fm -4 4]); %坐标范围调整

程序运行结果:
在这里插入图片描述
在这里插入图片描述

  • 3
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

周猿猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值