数字滤波器设计方法与MATLAB实现

Tianyi_Li 发表于 2021/12/05 21:04:15 2021/12/05
【摘要】 一、先来介绍IIR数字滤波器、FIR数字滤波器的设计方法:1. IIR数字滤波器的设计方法借助模拟滤波器设计方法分为脉冲响应不变法,频率变换法,双线性变换法等。 脉冲响应不变法利用模拟滤波器来设计数字滤波器,就是从已知的模拟滤波器传递函数Ha(s)设计数字滤波器的系统函数H(z)。因此,它归根结底是一个由S平面映射到Z平面的变换,这个变换通常是复变函数的映射变换,为了保证转换后的H(z)稳定...

一、先来介绍IIR数字滤波器、FIR数字滤波器的设计方法:

1. IIR数字滤波器的设计方法

借助模拟滤波器设计方法分为脉冲响应不变法,频率变换法,双线性变换法等。

  • 脉冲响应不变法

利用模拟滤波器来设计数字滤波器,就是从已知的模拟滤波器传递函数Ha(s)设计数字滤波器的系统函数H(z)

因此,它归根结底是一个由S平面映射到Z平面的变换,这个变换通常是复变函数的映射变换,为了保证转换后的H(z)稳定且满足技术要求,这个映射变换必须满足以下两条基本要求:因果稳定的模拟滤波器转换成数字滤波器,仍是因果稳定的。即 S平面的左半平面必须映射到Z平面单位圆的内部。数字滤波器的频率响应模仿模拟滤波器的频率响应,s平面的虚轴映射为z平面的单位圆,相应的频率之间成线性关系。

核心原理:通过对连续函数ha(t)等间隔采样得到离散序列ha(nT)。它是一种时域上的转换方法

  • 频率变换法

把一个频带范围变换到另一个相应的频带范围,称之为频率变换.利用频率变换可设计各种类型的频率选择滤波器.其基本思想是:根据给定的待设计指标,先变换成相应的低通原型滤波器的设计指标;然后按照低通滤波器的设计方法,设计出一个低通原型波滤器;最后再通过频率变换,求得所要求的实际低通、高通、带通、或带阻滤波器.频率变换有模拟频率变换与数字频率变换,可根据设计对象的要求来选取.

  • 双线性变换法

双线性换法的主要优点是S平面与Z平面一单值对应S平面的虚轴(整个jΩ)对应于Z平面单位圆的一周,S平面的Ω=0处对应于Z平面的ω=0处,对应即数字滤波器的频率响应终止于折迭频率处,所以双线性变换不存在混迭效应。

第一步:将整个S平面压缩到S1平面的一条横带里;

第二步:通过标准变换关系将此横带变换到整个Z平面上去。由此建立S平面与Z平面一一对应的单值关系,消除多值性,也就消除了混淆现象。

2.  FIR数字滤波器的设计方法

  • 窗函数法

窗函数设计法又称为傅里叶级数法。

核心:理想滤波器频率设计->反变换时域无限长信号->信号截断->右移变因果系统。

  • 频率抽样法

频率抽样法是从频域出发,在频域直接设计,把给定的理想频率响应加以等间隔抽样,并以此作为实际FIR滤波器的频率响应。设所需滤波器的频率响应为。

Hd[m]进行频率抽样,就是在z平面单位圆上的N个等间隔点上抽样出频率响应值。在单位圆上可以有两种抽样方式,第一种是第一个抽样点在w=0处,第二种是第一个抽样点在w=pi/M处,每种方式可分为M为偶数与M为奇数两种。

为了提高逼近质量,使逼近误差更小,也就是减小在通带边缘由于抽样点的徒然变化而引起的起伏变化(这种起伏振荡使阻带内最小衰减变小,例如从衰减30dB变小为衰减20dB)。和窗口法的平滑截断一样,这里是使理想频率响应的不连续点的边缘加上一些过渡的抽样点(在这些点上抽样的最佳值由计算机算出),从而增加过渡带,减小频带边缘的突变,也就是减小了起伏振荡,增大了阻带最小衰减。这些抽样点上的取值不同,效果也就不同。如果精心设计过渡带的抽样值,就有可能使它的游泳频带的博文减小,从而设计出较好的滤波器。一般过渡带取一、二、三点抽样值即可得到满意结果。

在理想低通滤波器的设计中,若不增加过渡点,阻带和通带之间的衰减约为-21dB,如果在通带和阻带之间增加一个采样点,阻带的最小衰减可以提高到-65dB,如果增加两个采样点,阻带的最小衰减可以提高到-75dB,如果增加3个采样点,阻带的最小衰减可以提高到-85dB-95dB

频率抽样法的优点是可以在频域直接设计,并且适合于最优化设计;缺点是抽样频率只能等于2pi/M的整数倍或等于2pi/M的整数倍上加上pi/M,因而不能确保截止频率Wc的自由取值。要想实现自由选择频率,则必须增加抽样点数M,但这种计算量加大。

  • 切比雪夫逼近法。

切比雪夫最佳一致逼近的基本思想是,对于给定区间[ab]上的连续函数f(x),在所有n次多项式的集合中,寻找一个多项式,使其在[ab]上对f(x)的偏差和其他一切属于集合的多项式对f(x)的偏差相比是最小的。

利用切比雪夫设计FIR数字滤波器时,满足最佳一致逼近的滤波器又具有等纹波性质。存在通带纹波以及阻带纹波。在实际求解过程中,利用数值分析中的Remez算法,靠一次次迭代来求得一组交错点组。

二、MATLAB实现如下

1.  IIR滤波器的设计

对于IIR滤波器,冲激响应理论上应会无限持续,其输出不仅取决于当前和过去的输入信号值,也取决于过去的信号输出值

滤波器的性能指标

低通滤波器性能指标 fp=500Hz, fs=550Hz, As=40dB, Ap=1dB。

高通滤波器性能指标 fs=4000Hz, fp=4300Hz, As=40dB, Ap=1dB

带通滤波器性能指标 fp1=1200 Hz, fp2=3000 Hz, fs1=1000 Hz,

fs2=3200 Hz, As=40dB, Ap=1dB。

滤波器设计要求:

(1) 设计IIR模拟滤波器原型:分别设计巴特沃斯型低通、高通、带通滤波器。

(2)设计切比雪夫和椭圆型低通滤波器,比较巴特沃斯型、切比雪夫和椭圆型低通滤波器的区别。

(3)设计IIR数字滤波器:用双线性变换法设计上面(1)要求的3种滤波器。

(4)设计FIR滤波器:用窗函数法设计上面要求的3种滤波器。可以利用函fir1设计FIR滤波器。

2. IIR模拟滤波器

2.1 巴特沃斯低通滤波器

Fs = 2000;
fp = 500;
fs = 550;
As = 40;
Ap = 1;
[n,fn] = buttord(fp/(Fs/2),fs/(Fs/2),Ap,As); [b,a] = butter(n,fn);
[h,w] = freqz(b,a);
figure(1)
Hf=abs(h);
plot(w,Hf)
title('巴特沃斯低通滤波器')
axis([0 4 0 2])

 

2.2 巴特沃斯高通滤波器

clear
Fs = 12000; fp = 4300;
fs = 4000;
As = 40;
Ap = 1;
 [n,fn] = buttord(fp/(Fs/2),fs/(Fs/2),Ap,As);
[b,a] = butter(n,fn,'high');
[h,w] = freqz(b,a);
figure(1)
Hf=abs(h);
plot(w,Hf)
title('巴特沃斯高通滤波器')

2.3 巴特沃斯带通滤波器

fp1=1200;fp2=3000;
fs1=1000;fs2=3200;
wp=[0.1*2*pi 0.15*2*pi];               
ws=[0.05*2*pi 0.2*2*pi];               
Rp=1;Rs=40;                                 
[N,Wn]=buttord(wp,ws,Rp,Rs,'s');       
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
title('巴特沃斯带通滤波器')

 

篇幅有限,暂时分享以上代码。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:cloudbbs@huaweicloud.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。