- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
更多精彩文章,尽在《匠人的百
宝箱》。网址:
《匠人手记》之三
一阶滤波算法之深入研究
作者:程序匠人 出处:《匠人的百宝箱》
1. 前言
关于一阶滤波的软件算法,匠人原来已经发表过一次,文件名称叫“《匠人手记》之三《一
阶滤波方法》”。但当时限于时间仓促,只是简单地给出了两个流程图,没有做深入描述。
这次,匠人将根据历年来对该算法应用的切身体会,重新进行整理,并改正原文档中的
错误。修改后的手记更名为“《匠人手记》之三《一阶滤波算法之深入研究》”。
另外:匠人将对以往的手记进行整理和完善,不断添加新的心得体会。逐渐将《匠人手
记》系列文章打造成网上的精品手记。
2. 一阶滤波算法的原理
一阶滤波,又叫一阶惯性滤波,或一阶低通滤波。是使用软件编程实现普通硬件RC 低
通滤波器的功能。
一阶低通滤波的算法公式为:Y(n)= αX(n) (1- α)Y(n-1)
式中:α=滤波系数;X(n)=本次采样值;Y(n-1)=上次滤波输出值;Y(n)=本次滤波输出
值。
一阶低通滤波法采用本次采样值与上次滤波输出值进行加权,得到有效滤波值,使得输
出对输入有反馈作用。
3. 一阶滤波算法的公式
公式原型:
本次滤波结果=新采样值×滤波系数÷256 +上次滤波结果×(256 -滤波系数)÷256
公式优化:
在上面的公式中,一共需要进行4 次乘/ 除法运算。
对于一些没有乘/ 除法指令的单片机来说,需要用循环加/减法来实现乘/ 除法运算。
过多次数乘/ 除法运算会降低系统的效率。因此,为了提高单片机的运算速度我们需要将
公式进行运算优化。
经过下面的方法后,我们只需要进行2 次乘/ 除法运算即可完成,效率提高了一倍。
当新采样值上次滤波结果时:
滤波结果=上次滤波结果-(上次滤波结果-新采样值) ×一阶滤波系数÷256
当新采样值上次滤波结果时:
滤波结果=上次滤波结果+(新采样值-上次滤波结果) ×一阶滤波系数÷256
说明:
滤波系数=0~255 ;该系数决定新采样值在本次滤波结果中所占的权重。
一阶滤波系数可以是固定的,也可以按一定算法在程序中自动计算。
如果你的‘芯’是一座作坊,我愿做那不知疲倦的程序匠……
更多精彩文章,尽在《匠人的百
宝箱》。网址:
4. 一阶滤波算法的程序
现在,我们给出一个滤波程序的基本流程图。
入口: FILTER_NEW=新采样值
FILTER_OLD=上次滤波结果
FILTER_1ST_CONST=滤波系数(0~255)(代表新采样值在滤波结果中占的权重)
出口: FILTER_OLD=本次滤波结果
大家也许会注意到这个流程图开始的地方调用了一个“调整一阶滤波系数”子程序。这
是一个更深入的问题,后面会有深入的探讨。在这里,让我们先忽略它吧。
5. 一阶滤波算法的效果
下面,我们用计算机软件来模拟一阶滤波的效果。
在下面的3 个图中,兰色线代表采样数据,红色线代表滤波后的数据。
当滤波系数=30 :
滤波效果图
30
25
20
数
值 15
10
5 采样值 滤波结果
0
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51
采样次数
如果你的‘芯’是一座作坊,我愿做
文档评论(0)