搜索
bottom↓
回复: 32

请教关于数字滤波器

[复制链接]

出0入0汤圆

发表于 2015-12-8 16:20:58 | 显示全部楼层 |阅读模式
已知程序中使用的滤波的差分方程是Y(k) = Y(k-1) * coefficient + X(k) * (1 - coefficient),这个应该是一阶RC滤波器的差分方程,已知滤波系数的计算方法coefficient = exp (-2 PI BW / Sampling frequency),请问这个使用了什么滤波方法?

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入8汤圆

发表于 2015-12-8 16:45:05 | 显示全部楼层
数字信号处理书上有已知差分方程,求幅频特性曲线的方法
用matlab就可以,知道 coefficient之后画出幅频特性曲线

出10入23汤圆

发表于 2015-12-8 17:17:34 来自手机 | 显示全部楼层
iir滤波器!!!

出0入0汤圆

 楼主| 发表于 2015-12-9 08:56:11 | 显示全部楼层

谢谢答复,IIR滤波器的滤波方法有前向差分法、后向差分法、冲激不变法、阶跃不变法、双极线法,请问这个用的是什么方法呢?

出10入23汤圆

发表于 2015-12-9 09:28:15 来自手机 | 显示全部楼层
你看到那个exp函数,就知道这是用的冲激不变法变换的

出0入8汤圆

发表于 2015-12-9 09:33:48 | 显示全部楼层
原来问的是滤波方法而不是滤波器类型。。。

出0入0汤圆

发表于 2015-12-9 21:43:07 | 显示全部楼层
我觉得可以作个近似的推导:
电阻的电流 i=u/r=(x-y0)/r
电容的电压 u=y1=y0+q/c=y0+i*t/c
假设t为1,电流i几乎不变

y1=y0+(x-y0)/(r*c)
  =y0*(1-r*c)+x*(r*c)
将(1-r*c)用coefficient 代替就是上面那个公式了

出0入0汤圆

 楼主| 发表于 2015-12-10 09:40:17 | 显示全部楼层
时域上一阶RC滤波器的传递函数是:Ha(s) = 1/(RCS+1)
用冲激响应不变法做Z变化
H(z) = (1/RC)/(1-e^(-T/RC)*Z^(-1) )
根据1楼上面的公式得到的传递函数应该是
H(z) = (1-e^(-T/RC))/(1-e^(-T/RC)*Z^(-1) )
这是怎么回事?

出0入0汤圆

 楼主| 发表于 2015-12-11 09:17:25 | 显示全部楼层
zouzhichao 发表于 2015-12-9 09:28
你看到那个exp函数,就知道这是用的冲激不变法变换的

你好,能帮忙解释一下吗?

出10入23汤圆

发表于 2015-12-11 09:39:54 | 显示全部楼层
Michael_STM 发表于 2015-12-11 09:17
你好,能帮忙解释一下吗?


手机操作不方便,就写这么多吧

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2015-12-11 09:55:03 | 显示全部楼层
zouzhichao 发表于 2015-12-11 09:39
手机操作不方便,就写这么多吧

解释的很到位,非常感谢!

出10入23汤圆

发表于 2015-12-11 10:01:49 来自手机 | 显示全部楼层
Michael_STM 发表于 2015-12-11 09:55
解释的很到位,非常感谢!

正好最近在看数字信号处理的书

出0入0汤圆

 楼主| 发表于 2015-12-11 10:33:49 | 显示全部楼层
zouzhichao 发表于 2015-12-11 10:01
正好最近在看数字信号处理的书


再叨扰一下,这个公式的前提是T远小于RC
T = 1/Fs        Fs是采样频率
RC = 1/(2*pi**Fc)        Fc是截至频率
T/RC = 2*pi*Fc/Fs
也就是说采样频率要比截至频率大很多,是这个意思吧

出10入23汤圆

发表于 2015-12-11 10:41:21 来自手机 | 显示全部楼层
Michael_STM 发表于 2015-12-11 10:33
再叨扰一下,这个公式的前提是T远小于RC
T = 1/Fs        Fs是采样频率
RC = 1/(2*pi**Fc)        Fc是截至频率

是的,一般十倍以上吧

出0入0汤圆

 楼主| 发表于 2015-12-11 10:52:07 | 显示全部楼层
zouzhichao 发表于 2015-12-11 10:41
是的,一般十倍以上吧

嗯,感谢回复!

出10入23汤圆

发表于 2015-12-11 16:12:16 来自手机 | 显示全部楼层
本帖最后由 zouzhichao 于 2015-12-11 18:58 编辑
Michael_STM 发表于 2015-12-11 09:55
解释的很到位,非常感谢!


再帮楼主顶一下,纠正一个错误,刚才用阶跃响应不变法推导了一遍,跟楼主位的一样,而用冲激响应不变法推导,则需要做近似处理,因此楼主位用的是阶跃响应不变法变换的

出10入23汤圆

发表于 2015-12-11 16:40:33 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2015-12-14 15:14:57 | 显示全部楼层

嗯,感谢指导,兄弟,有没有想过从S域到Z域变化方式不同会对滤波效果产生什么样的影响,也就是说这些冲激响应不变、阶跃响应不变或者双极线变化等的应用场合是什么?

出10入23汤圆

发表于 2015-12-14 16:05:15 来自手机 | 显示全部楼层
Michael_STM 发表于 2015-12-14 15:14
嗯,感谢指导,兄弟,有没有想过从S域到Z域变化方式不同会对滤波效果产生什么样的影响,也就是说这些冲激 ...

还真有思考过一点点,不过我基础不是很好,很多也没有想明白
冲激响应不变法由于存在频谱混叠,不适合高通和带阻滤波器
阶跃响应不变法同上,直流增益不变,没有余差
双线性变换由于有频率压缩,没有频谱混叠,可以做高通和带通滤波,此外从计算机的角度来看,双线性变换是多项式乘积运算,而响应不变法需要解高次方程
matlab的fdatool用的双线性变换法做的

出0入0汤圆

 楼主| 发表于 2015-12-14 20:28:17 | 显示全部楼层
本帖最后由 Michael_STM 于 2015-12-14 20:30 编辑
zouzhichao 发表于 2015-12-14 16:05
还真有思考过一点点,不过我基础不是很好,很多也没有想明白
冲激响应不变法由于存在频谱混叠,不适合高 ...


我推导了一下双极性变换的传递函数,用Matlab验证过,确实如此。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出10入23汤圆

发表于 2015-12-14 20:58:14 来自手机 | 显示全部楼层
Michael_STM 发表于 2015-12-14 20:28
我推导了一下双极性变换的传递函数,用Matlab验证过,确实如此。

我也验证过,目前准备用c重构一个fdatool工具,用在嵌入式环境下在线修改滤波器参数

出0入0汤圆

 楼主| 发表于 2015-12-14 22:24:53 | 显示全部楼层
zouzhichao 发表于 2015-12-14 20:58
我也验证过,目前准备用c重构一个fdatool工具,用在嵌入式环境下在线修改滤波器参数 ...

恩,想法不错,我明天把我们公司基于IIR滤波器的C文件给你参考一下,不过不是动态的,是固定死的几个。

出10入23汤圆

发表于 2015-12-14 22:34:29 来自手机 | 显示全部楼层
Michael_STM 发表于 2015-12-14 22:24
恩,想法不错,我明天把我们公司基于IIR滤波器的C文件给你参考一下,不过不是动态的,是固定死的几个。{: ...

先谢谢了,不过公司的东西公开也不合适,还是不要了。固定参数的代码我已经实现了,现在主要在摸透这些滤波器的详细原理和细节,这个才是最大的障碍,代码实现相对难度很小,目前fir的窗函数法和iir中的巴通沃斯算是勉强搞定了

出0入0汤圆

 楼主| 发表于 2015-12-15 10:16:12 | 显示全部楼层
zouzhichao 发表于 2015-12-14 22:34
先谢谢了,不过公司的东西公开也不合适,还是不要了。固定参数的代码我已经实现了,现在主要在摸透这些滤 ...


嗯,这个很好,希望到时能跟大家分享一下!

出10入23汤圆

发表于 2017-4-1 23:04:26 | 显示全部楼层
Michael_STM 发表于 2015-12-15 10:16
嗯,这个很好,希望到时能跟大家分享一下!

fir版本的已经发布,iir比fir难做,还在难产中
http://www.amobbs.com/thread-5671402-1-1.html

出10入23汤圆

发表于 2017-10-21 09:16:24 来自手机 | 显示全部楼层
Michael_STM 发表于 2015-12-15 10:16
嗯,这个很好,希望到时能跟大家分享一下!

iir滤波器的傻瓜式工具也发布出来了

出0入0汤圆

发表于 2017-10-21 09:25:30 | 显示全部楼层
IIR数字滤波器

出10入23汤圆

发表于 2017-10-21 19:37:34 | 显示全部楼层
Michael_STM 发表于 2015-12-15 10:16
嗯,这个很好,希望到时能跟大家分享一下!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2017-10-27 08:54:11 | 显示全部楼层
一阶低通滤波器

出0入0汤圆

发表于 2017-10-27 09:26:44 | 显示全部楼层

matlab可以自动代码生成,是不是可以把他生成的代码拿来做参考

出10入23汤圆

发表于 2017-10-27 11:10:57 | 显示全部楼层
散吧散吧 发表于 2017-10-27 09:26
matlab可以自动代码生成,是不是可以把他生成的代码拿来做参考

我用的matlab生产的fdacoefs.h,然后自己生成的iir滤波代码

出0入0汤圆

发表于 2017-10-27 11:20:52 | 显示全部楼层
完全听不懂楼上大佬在说什么 很厉害的样子

出0入0汤圆

发表于 2017-10-27 13:21:22 | 显示全部楼层
zouzhichao 发表于 2017-10-27 11:10
我用的matlab生产的fdacoefs.h,然后自己生成的iir滤波代码

matlab是有代码生成的组件的,应该是支持直接将matlab代码生成C代码,同时可以运行在单片机或者PC机上,你可以在生成的源代码中做优化,也可以直接生成lib文件,在你自己的软件中做调用。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-29 06:22

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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