技术无极限

常用链接

统计

最新评论

2006年6月24日学习心得

     今天检查了以往设计的滤波器,可是发现只有程序中保留的滤波器系数,而没有了原先设计时的滤波器频率指标。看着测试结果,老大怀疑滤波做的不对,所以检查了下。
    重新用MATLAB设计滤波器的时候,发现IIR要比FIR的频率响应好很多,所以干脆换成IIR得了。可是IIR设计出的系数总是一个SOS matrix,在网上找了半天也没查出它究竟是什么意思。后来在老大的提示下利用convert to single  section,终于出现了我熟悉的num和den,带入程序实验,发现数据慢慢增长,以致最后出现1.#INF0000 (顺便说一个这个1.#INF0000 ,网上的提示大都是说你除了0,而实际上是,当你的数据大得超过你的变量类型的范围时,也出现这种情况。我刚开始float出现1.#INF0000 ,后来把float改为double,结果解决了暂时问题,最终还是会出现1.#INF0000 ,因为滤波器的错误,使得我的数值不断的增长。)。
   最终还是向别人请教解决了IIR滤波器的设计问题。也就是利用matlab的fdatool设计之后,不能直接看filter coefficients,而是通过realise model ,出现了一个simulink类似的滤波器model块,打开该model后,可以看到滤波器的结构,而且每个系数都可以打开来查看,然后根据该滤波器的结构,就可以来实现filter的编程了。
   唉,现在网上书上好多IIR滤波器的设计问题,可是鲜有文章提到这最后关键的一步,不知道是它太简单了还是大家都没有用到过它。总之我的教训时,直接用filter coefficients设计的滤波器是不正确的,因为我的数据说明这个问题。

posted on 2009-06-24 21:22 勇敢空心人 阅读(1499) 评论(1)  编辑 收藏 引用

评论

# re: 2006年6月24日学习心得 2009-06-25 18:10 null

慢慢积累知识。  回复  更多评论   


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理