MATLAB代码 有限冲激响应(FIR)滤波器和无限冲激响应(IIR)滤波器

MATLAB有限冲激响应(FIR)滤波器和无限冲激响应(IIR)滤波器设计

附MATLAB代码

摘要

文章设计了一个数字信号处理仿真实验,产生一个信号,其频率成分为f1和f2,并对其进行理想采样,采样频率为fs;对采样后的信号采用快速傅里叶变换进行频谱分析,以验证信号频率的正确性;并设计有限冲激响应(FIR)滤波器和无限冲激响应(IIR)滤波器将信号分离为仅有f1或f2的正弦信号。

1采样定理

在进行模拟/数字信号的转换过程中,当采样频率fs.max大于信号中最高频率fmax的2倍时,即fs.max>2fmax,采样之后的数字信号完整地保留了原始信号中的信息,一般实际应用中保证采样频率为信号最高频率的2.56到4倍;采样定理又称奈奎斯特定理。如果不能满足采样定理,采样后信号的频率就会重叠,即高于采样频率一半的频率成分将被重建成低于采样频率一半的信号。

2快速傅里叶变换

快速傅里叶变换(FFT),是离散傅里叶变换(DFT)的快速算法,它是根据DFT的奇、偶、虚、实等特性,对DFT的算法进行改进获得的。设x(n)为N项的复数序列,由DFT求出N项复数序列的X(n),即N点DFT大约就需要N^2次复乘,N(N-1)次复加。在FFT中,利用WN的周期性和对称性,把一个N项序列分为两个N/2项的子序列,直到分成两两一组的DFT运算单元,那么N点的DFT变换就只需要Nlog2N次的运算。这就是FFT的优越性。

3IIR滤波器

IIR 数字滤波器的特征是,具有无限持续时间冲激响应,需要用递归模型来实现。IIR数字滤波器的间接设计法是常用的IIR滤波器设计方法。它的原理是根据所要设计滤波器的参数去确定一个模拟滤波器的传输函数。模拟巴特沃斯滤波器是最为有名的模拟滤波器,由于它设计简单,性能方面又没有明显的缺点,因而得到了广泛应用。其中,巴特沃斯滤波器的特点是通频带的频率响应曲线最平滑。滤波器的截止频率的变换是通过先求出待设计滤波器的截止频率与基准滤波器的截止频率的比值M,再用这个M去除滤波器中的所有元件值来实现的,其计算公式如下:M=待设计滤波器的截止频率/基准滤波器的截止频率巴特沃斯模拟滤波器是常用的滤波器形式。
根据模拟滤波器传输函数,通过双线性变换、或冲激响应不变法来进行数字滤波器的设计。冲激响应不变法使数字滤波器的单位脉冲响应模仿模拟滤波器的单位冲激响应。由于脉冲响应不变法存在缺点,从s平面直接映射到z平面时会产生混叠现象,而且脉冲响应不变法只适合频率响应在高频处单调递减的模拟原型滤波器,因此其应用范围受到限制。
双线性变换法的主要目的是从根本上解决上述脉冲响应不变法的问题,但是相位是非线性的。双线性变换法:将整个s平面压缩变换到一中介平面的一条横带里,再将此横带变换到整个z平面。

4FIR滤波器

由于理想滤波器在边界频率处不连续,故时域信号hd(n)一定是无限时宽的,也是非因果的,所以理想低通滤波器是无法实现的。如果实现一个具有理想线性相位特性的滤波器,其幅值特性只能采用逼近理想幅频特性的方法实现。如果对时域信号hd(n)进行截取,并保证截取过程中序列保持对称,而且截取长度为N,截取后序列为h(n),则h(n)可用以下式子表示:h(n)=hd(n)*w(n)。
w(n)为截取函数,又称为窗函数。如果窗函数为矩形序列,则称之为矩形窗。窗函数有多种形式,为保证加窗后系统的线性相位特性,必须保证加窗后序列关于α=1/2∗(N−1)点对称。常用的窗函数有矩形窗、汉宁窗、汉明窗、布莱克曼窗、凯塞窗。窗函数设计法的基本思想是用一个长度为N的序列h(n)代替hd(n)。

5实验

设计一个仿真实验:
1)产生一个信号st,该信号为两路正弦信号的叠加,正弦信号的频率成分分别为f1=250HZ和f2=500HZ,相位均为0度、幅度均为1V。
2)对st进行理想采样,采样频率fs=10000HZ。
3)通过快速傅里叶变换可对信号st进行频谱分析。
4)设计FIR低通高通滤波器,将信号分离为仅有f1或f2的正弦信号。本次实验选用阻带最小衰减As=53dB的汉明窗作为窗函数。对于频率为f1的信号,可以采用低通滤波器进行分离,其指标为:通带截止频率为fp=280HZ,阻带截止频率fs=450HZ。对于频率为f2的信号,可以采用高通滤波器进行分离,其指标为:通带截止频率为fp=450HZ,阻带截止频率fs=340HZ。
5)设计IIR低通高通滤波器,将信号分离为仅有f1或f2的正弦信号。选择模拟巴特沃斯滤波器,对模拟滤波器进行双线性变换为数字滤波器。对于频率为f1的信号,可以采用低通滤波器进行分离,其指标为:通带截止频率为fp=280HZ, 通带最大衰减Rp=1dB,阻带截止频率fs=450HZ, 阻带最小衰减As=30dB。对于频率为f2的信号,可以采用高通滤波器进行分离,其指标为:通带截止频率为fp=450HZ, 通带最大衰减Rp=1dB,阻带截止频率fs=340HZ, 阻带最小衰减As=30dB。
将实验的设计用MATLAB仿真加以实现,实验的结果如下,图5-1所示为产生的信号s(t)的波形以及采样结果。使用FFT对其进行频谱分析如图5-2,

结果

在这里插入图片描述
在这里插入图片描述

选用阻带最小衰减As=53dB的汉明窗作为窗函数,FIR低通和高通数字滤波器的幅频响应如图5-3,5-4所示。
在这里插入图片描述在这里插入图片描述
采用FIR低通滤波器进行滤波,滤波后的信号为仅有频率为f1的正弦信号x1(t)。采用FIR高通滤波器进行滤波,滤波后的信号为仅有频率为f2的正弦信号x2(t),滤波之后的信号波形以及信号的频谱归一化后如图5-5,5-6所示。由图可知,通过滤波器成功地将混叠信号分离为两个独立的信号。
5-6FIR低通滤波器滤波后x1(t)波形和频谱分析
在这里插入图片描述
采用IIR低通高通滤波器进行滤波,选择模拟巴特沃斯滤波器,对模拟滤波器进行双线性变换为数字滤波器。滤波器的幅频响应如图5-7,5-8所示。IIR低通高通滤波器进行滤波后的结果如图5-9,5-10所示,由图可知,IIR的方法进行滤波同样可以达到同FIR方法一样的效果。
MATLAB代码

// IIR滤波器
%%%%%%%%%%%%%%%%%%%%%%%IIR滤波器
N1<
  • 8
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值