求FIR算**??

[复制链接]
3378|7
 楼主| liaozhihua 发表于 2009-1-15 19:30 | 显示全部楼层 |阅读模式
请问哪位前辈有FIR低通滤波器算法的C代码,如有,请发一份到liao_zhi_hua@163.com,谢谢!!!
李冬发 发表于 2009-1-18 21:49 | 显示全部楼层

这东西的C代码很简单的啊,难得是系数的计算

 楼主| liaozhihua 发表于 2009-1-19 16:58 | 显示全部楼层

麻烦贴一下代码

李冬发 发表于 2009-1-19 23:12 | 显示全部楼层

看看FIR滤波器的z变换就知道怎么写的了。

这是FIR滤波器的z变换式:
H(z)=h(0)z-0 + h(1)z-1 + h(2)z-2 + ... h(N-1)z-(N-1)

看着有点晕,其实表达的意思就是:
输入的当前采样值,前一个的采样值,再前一个的采样值...,前n个的采样值,分别乘以相应的系数的结果。累加在一起就是当前输出值。

这下你自己能写了吧。
宇宙飞船 发表于 2009-1-20 21:32 | 显示全部楼层

很久没看过这东东了,依稀记得是

用硬件电路推导出来的,例如对于一阶滞后滤波实际上是这条公式
U=U(1-E^(-t/τ))的计算机模以.
书上的公式都是别人经过变形的了,同硬件早已面目全非.
宇宙飞船 发表于 2009-1-20 21:45 | 显示全部楼层

书上的一阶滞后滤波公式:Y(k)=(1-Q)Y(K-1)+QX(K)

滤波系数Q=T/(T+τ).
//---------------
把Q代回上式,再对比硬件公式 U = U(1-E^(-t/τ))就能明白个中玄机.
宇宙飞船 发表于 2009-1-20 22:06 | 显示全部楼层

以下是代回的步骤过程,

Y(k)=(1-Q)Y(K-1)+QX(K)  //1
Y(k)=Y(K-1)-QY(K-1)+QX(K) //2
Y(k)=Y(K-1)+QX(K)-QY(K-1) //3  其中X(K)是当前的输入电压

Y(k)=Y(K-1)+[X(K)-Y(K-1)]Q //4 

对比硬件公式:
U(出)= U(1-E^(-t/τ)) 
去括号得:U(出) == U- U*E^(-t/τ) //U是当前的输入电压.
Y(k)=Y(K-1)+[X(K)-Y(K-1)]Q   //4 现在看出Q是啥东西了.
                //Q 其实就是:E^(-t/τ))
angelguard 发表于 2009-1-27 21:11 | 显示全部楼层

我有,找我吧

我有,angelguardstar@sina.com
找我吧。
PS:楼上说的对的,关键是系数的确定,这就需要用到matlab
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

35

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部