声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2153|回复: 1

[滤波] 怎么用FDATOOL设计工频陷波器及验证

[复制链接]
发表于 2012-10-12 16:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
麻烦大家帮忙设计一个50HZ陷波器,我自己设计完仿真验证好像不对!
参数如下
iir.jpg
生成的系数后在用sosfilt函数滤波,发现不对,大家帮忙看看!谢谢!
回复
分享到:

使用道具 举报

 楼主| 发表于 2012-10-12 16:43 | 显示全部楼层
我是参照这篇文章来的
juneja.blog.hexun.com/60023348_d.html
FDATool中IIR设计及系数导出 [原创 2008-11-11 14:56:00]   



字号:大 中 小

IIR滤波器的设计
书上的IIR都是先说用模拟滤波器转到数字,但是现在有了MATLAB,这种方法只用了解,现在没有谁会有耐心去先查表,再搞s方程,再双线性变换,还要预畸变,这么一长串东西搞下来,不晕也要吐了。

1.MATLAB中fdatool,选择direct form II(MATLAB默认),一方面是因为directform I要更多的内存,另一方面是由于direct form I先和分子发生运算,而分子又很小,导致精度达不到要求。

2.使用Matlab的FDAtool工具可以很方便地IIR设计滤波器。使用File菜单中的export选项可以把滤波器的参数输出到Matlab的工作空间中。若滤波器为IIR型,则输出的变量名为G和SOS。它把高阶的IIR滤波器转换为一系列二阶IIR滤波器的级联。SOS为二阶IIR滤波器的系数(b,a),G为各级的增益系数,可用来调节各级通带的衰减。计算IIR滤波器的输出的时候,先将输入数据乘以G, 然后一一通过SOS中的每个IIR滤波器,就得到最终的结果了。

SOS的每一行表示一级二阶IIR滤波器系[b0,b1,b2,a0,a1,a2],G的每个元素表示相应级的增益系数。也即将G乘上SOS的b0,b1,b2。得到一组新的滤波器系数SOS',可调用MATLAB滤波函数sosfilt对输入信号进行滤波。

但是如果二阶IIR滤波器的程序只支持定点小数运算的话,那么就需要调整一下系数了。因为设计出来的G有时候很小(不知道会不会很大),这样一旦把输入数据乘以G后,就会使得二阶IIR滤波器的输入过小,造成很大的误差。我们需要把G分配到每个二阶IIR滤波器的系数中,使得每次得到的中间结果都刚好不会溢出。若以IIRi表示第i个二阶IIR滤波器的话,则我们需要保证IIR1, IIR1 * IIR2, IIR1 * IIR2 * IIR3, … 的频率响应都不超过0dB,*号表示级联。为了使得输出的精度最好,我们还需要让上面这些滤波器的频率响应中的最大值最接近0dB。
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-19 06:39 , Processed in 0.061282 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表