算法学习笔记之一阶低通滤波算法

算法学习笔记之一阶低通滤波算法1.一阶滤波算法的原理一阶滤波,又叫一阶惯性滤波,或一阶低通滤波。是使用软件编程实现普通硬件RC低通滤波器的功能。一阶低通滤波的算法公式为:Y(n)=αX(n)(1-α)Y(n-1)式中:α=滤波系数;X(n)=本次采样值;Y(n-1)=上次滤波输出值;Y(n)=本次滤波输出值。一阶低通滤波法采用本次采样值与

大家好,又见面了,我是你们的朋友全栈君。

 

 1. 一阶滤波算法的原理 

一阶滤波,又叫一阶惯性滤波,或一阶低通滤波。是使用软件编程实现普通硬件RC低通滤波器的功能。 

一阶低通滤波的算法公式为:

                         Y(n)=αX(n) + (1-α)Y(n-1) 

 

  式中:α=滤波系数;X(n)=本次采样值;Y(n-1)=上次滤波输出值;Y(n)=本次滤波输出值。 

 

一阶低通滤波法采用本次采样值与上次滤波输出值进行加权,得到有效滤波值,使得输出对输入有反馈作用。

 

 2. 一阶滤波算法的程序(适用于单个采样) 

#define a   0.01                // 滤波系数a(0-1)

char value;                    //滤波后的值
char new_value;                 //  新的采样值

char filter() 
{ 
char new_value; 
new_value = get_ad(); 
return 0.01*value + (1-0.01)*new_value;
 }
</pre><pre>

 

 

 

 

 

3. 一阶滤波算法的不足 

1. 关于灵敏度和平稳度的矛盾 

     

      滤波系数越小,滤波结果越平稳,但是灵敏度越低;

      滤波系数越大,灵敏度越高,但是滤波结果越不稳定。

     一阶滤波无法完美地兼顾灵敏度和平稳度。有时,我们只能寻找一个平衡,在可接受的灵敏度范围内取得尽可能好的平稳度。而在一些场合,我们希望拥有这样一种接近理想状态的滤波算法。即:

     当数据快速变化时,滤波结果能及时跟进(灵敏度优先);

     当数据趋于稳定,在一个固定的点上下振荡时,滤波结果能趋于平稳(平稳度优先)。

 

2. 关于小数舍弃带来的误差 

   一阶滤波算法有一个鲜为人知的问题:小数舍弃带来的误差。 比如: 本次采样值=25,上次滤波结果=24,滤波系数=10, 根据滤波算法:

      本次滤波结果=(25*10+24*(256-10))/256=24.0390625 
   但是,我们在单片机运算中,很少采用浮点数。因此运算后的小数部分要么舍弃,要么进行四舍五入运算。这样一来,本例中的结果24.0390625就变成了24。假如每次采样值都=25,那么滤波结果永远=24。也就是说滤波结果和实际数据一直存在无法消除的误差。
 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/132080.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • VS2019+OpenCV安装与配置教程

    VS2019+OpenCV安装与配置教程目录VS2019的下载安装OpenCV的下载安装OpenCV的配置配置系统变量给VS中的工程一键配置OpenCV测试配置的效果最近要用到很多OpenCV的库,所以开始学了点OpenCV,本文记录VS和OpenCV的安装、配置过程。配置OpenCV使用配置文件的方法,配置完一次就可以给其他工程使用,非常方便。VS2019的下载安装这里有VisualStudio2019的详细教程,社区版是免费使用的,登录一下微软账户就行。OpenCV的下载安装OpenCV下载链接。我装的是4.3、Window

  • javascript 数组以及对象的深拷贝(复制数组或复制对象)的方法

    javascript 数组以及对象的深拷贝(复制数组或复制对象)的方法javascript数组以及对象的深拷贝(复制数组或复制对象)的方法前言在js中,数组和对象的复制如果使用=号来进行复制,那只是浅拷贝。如下图演示:如上,arr的修改,会影响arr2的值,这显然在绝大多数情况下,并不是我们所需要的结果。因此,数组以及对象的深拷贝就是javascript的一个基本功了。数组的深拷贝条条大道通罗马,实现数组的深拷贝,是有好几种方法的。举例如下:for循环

  • k2p openwrt路由部署阿里云aliyun-ddns[通俗易懂]

    k2p openwrt路由部署阿里云aliyun-ddns[通俗易懂]之前一直有想法入手一个NAS,用于存储项目文件、照片及电影。本来想买个群晖218的,可喜的是赶上了星际蜗牛矿难(被骗的人好可怜,感同身受……),闪电下了一个D款的小蜗牛。星际蜗牛矿机安装群晖NAS的过程我就不说了,很简单,有需要的可以参照下面的文章。https://post.smzdm.com/p/adwl92zk/?send_by=8903307869家里的路由器是K2P同学帮刷的open…

  • ibm x201 怎么清理内部_ThinkPad X201拆解,联想Thinkpad X201拆机图解

    ibm x201 怎么清理内部_ThinkPad X201拆解,联想Thinkpad X201拆机图解1.jpg(25.79KB,下载次数:2552)2010-6-120:13上传ThinkPadX201掌托,没有防滚架,这个掌托就显得很软。电磁屏蔽做得很用心。2.jpg(39.16KB,下载次数:2556)2010-6-120:13上传ThinkPadX201掌托特写,可以看到掌托塑料件是MITSUBISHI(三菱)代工的,富士通高端笔记本的塑料件也由三菱代工,一句话…

  • JS截取字符串方法实例

    JS截取字符串方法实例

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号