完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
IIR是无限长单位脉冲响应数字滤波器,其系统对应函数有如下形式:
在知道滤波器相应的系数b[],a[]后可根据相应的差分方程,完成对数据的滤波,而滤波器的系数可以通过Matlab滤波器设计和分析工具箱Filter Design&Analysis Tool求得,下面以一个IIR三阶低通滤波器为例,介绍C语言IIR滤波器的实现方法: 1、 计算滤波器的系数 根据信号的采样频率以及低通滤波器的截止频率,通过Matlab工具箱求得滤波器的系数b和a。如信号采样率为f=400Hz,低通滤波器的截止频率fc=60Hz: Matlab中Start→ToolBoxes→Filter Design→Filter Design & Analysis Tool(fdatool) 在Filter Design & Analysis Tool,输入滤波器的相应指标,点击“Design Filter”设计滤波器。如下图所示: 通过Analysis→Filter coefficients查看所设计滤波器系数: 响应函数: 2、 差分方程C语言实现 根据相应函数得到差分方程: a[0]*y=Gain*(b[0]*x+b[1]*x[i-1]+b[2]*x[i-2])-a[1]*y[i-1]-a[2]*y(n-2) 其中Gain=0.146747,b[]={1,2,1},a[]={1,-0.837000,0.42398},x为输入信号,y为滤波后信号。C语言实现代码如下: 也可以使用如下代码: 注意:在滤波之前,需要将系数w_x[]、w_y[]、w置零 滤波前 滤波后 运用如上的方法可以设计50Hz陷波器,高通滤波器,只需要改变滤波器系数B、A即可。50Hz陷波器,Matlab工具箱设计如下: 50Hz陷波matlab陷波程序如下: |
|
|
|
只有小组成员才能发言,加入小组>>
2528 浏览 0 评论
1118浏览 2评论
725浏览 1评论
477浏览 0评论
225浏览 0评论
370浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-4 03:28 , Processed in 1.246607 second(s), Total 79, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号