利用matlab进行IIR数字滤波器设计

利⽤matlab进⾏IIR数字滤波器设计
最近处理语⾳信号⽤到了数字滤波器,⾃⼰稍微做了下总结,上传上来,以备以后不时之需。
下⾯这两张图⽚,从滤波器类型选择,具体每步如何进⾏都记录了个⼈的⼀些学习过程,如有不对,欢迎各位⼤神批评指正。
滤波的基本过程个⼈总结为以下⼏步:
1.根据个⼈需求选择合适的滤波器类型。
2.根据通带阻带频率、通带波纹、阻带衰减等参数确定滤波器的阶数和截⽌频率;
3.根据阶数与截⽌频率设计滤波器,得到滤波器传递函数的系数
4.根据滤波器系数与原始信号进⾏卷积计算,即对原始信号实现了滤波。
1.滤波器的选择:
2.滤波器设计过程:
其中,滤波器的阶次也可按照⼿⼯的⽅式计算,计算公式如下图所⽰:
3.进⾏滤波
y=filter(b,a,x);,输⼊x为滤波前序列,y为滤波结果序列,b/a 提供滤波器系数,b为分⼦, a为分母
整个滤波过程是通过下⾯差分⽅程实现的:
a(1)*y(n) = b(1)*x(n) + b(2)*x(n-1) + … + b(nb+1)*x(n-nb)- a(2)*y(n-1) - … - a(na+1)*y(n-na)
na,nb分别为抽头数⽬,幂次依次降低。
4.⼀些基本的概念
通带纹波:在滤波器的频响中通带的最⼤幅值和最⼩幅值的差,正常的滤波器⼀般通带纹波⼩于1db,不过也视情况⽽定。
通带纹波会导致通带内的信号幅值⼤⼩有变化,对⼀些要求⾼的系统,纹波越⼩越好。通带纹波和滤波器的阶数有关系,阶数越⼤纹波越⼩。
阻带纹波道理应该是⼀样的,不过好像没有⼈去关注阻带的纹波,主要关注的阻带参数是阻带衰减。
抽头:可以简单地理解为滤波器系数的个数。⽐如⼀个4抽头的滤波器(1, - 5, 20, 20 ),若输⼊为变量
A,B,C,D,则该滤波器的输出为A-5*B+20*C+20*D。这⾥的系数类似于加权的权值。
5.滤波器的C实现
⽬前c语⾔实现滤波器最佳的⽅法是:
⾸先采⽤matlab 现有的函数或者⼯具箱,设计好滤波器,得到滤波器阶数、抽头系数等数据;然后根据⼩节3中的滤波器公式,对原始信号进⾏滤波即可。

本文发布于:2024-09-25 08:34:17,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/95430.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:信号   系数   阻带   滤波
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议