一阶滤波器

article/2025/10/19 6:56:11

 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 a *value +(1-a)*new_value;
}

3. 一阶滤波算法的不足 

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

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

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

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

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

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

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

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

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


4.飞控中的低通滤波算法

thr_lpf+=(1 / (1 + 1/(2.0f * 3.14f * T )))*(height_thr - thr_lpf)

看这个变量名这应该是对油门进行低通滤波,于是我就注释上低通滤波

整理一下上式可以得到

 


http://chatgpt.dhexx.cn/article/wxUeDpfG.shtml

相关文章

FIR数字滤波器设计

今天给大侠带来FIR数字滤波器设计,由于篇幅较长,分三篇。今天带来第三篇,FIR数字滤波器设计,包括窗函数法设计FIR滤波器、频率采样法设计FIR滤波器以及基于firls函数和remez函数的最优化方法设计FIR滤波器。话不多说,上…

一阶二阶数字滤波器笔记

数字滤波器 一阶数字滤波器时域分析频域分析数字化代码示例 二阶巴特沃斯低通滤波器S域和Z域的频率关系分析巴特沃斯滤波器举例说明代码示例 声明:感谢知乎大佬的文章,原文链接 数字滤波器实现方法是把滤波器所要完成的运算编成程序并让计算机执行,也就…

简单二阶滤波器截止频率的计算

最近刚好学习到这了,而我在网上查资料的时候却非常难找,不少资料讲解不够详细,所以经过我努力也为了为大家做点贡献的想法,以自己的见解写下这篇文章。废话不多说,先从一阶滤波器讲起。 一阶低通滤波器: …

如何确定插值滤波器的阶数

在信号处理中,滤波器的系数我们往往都是通过MATLAB来设计,只要我们知道滤波器的通带截止频率和阻带起始频率,就可以通过MATLAB中的fdatool(在MATLAB2020中使用filterDesigner)来设计滤波器了。 我们使用归一化的参数来…

标识符无效

表中存在该列,插入的时候却显示 标识符无效,使用dbsql插入报错,自己写入数据没有问题! 查资料发现可能和列的大小写有关。这里强调sql一定用全大写来写避免不必要的麻烦!但是我改过后发现并不是这个问题…… 问题已解…

ORA-00904 ID 标识符无效 解决方案

msg:"数据访问异常" dev:"ORA-00904:"ID":标识符无效 ORA:即 Oracle 报错。 标识符无效是因为:SQL语句中,列名(ID)不在表中。解决方案&#x…

PLSQL ORA-00904 标识符无效

问题在于“COMPONET_ID” 是字符串,无法识别,如果不是字符串,就可以识别

Oracle标识符无效

Oracle在创建表的时候提示“ORA-00904:标识符无效” 原因为最后一行列定义多了一个逗号,去掉即可。

【Oracle相关】坑!使用oracle时,发生标识符无效解决办法

–真是个大坑 使用oracle时,发生标识符无效解决办法 一般出现该错误的原因: 1、列名写错导致 2、使用了关键字作为了列名 但是这次遇到的情况有点奇葩 通过dblink直接查询该表,并没有报出问题,但在存储过程中通过dblink访问就一直报标识符…

ORA-00904 标识符无效 解决方案

ORA:即Oracle报错。 标识符无效:SQL语句中,这个字段名不在表中。 解决方案:修改SQL语句中对应的字段或者修改表里面对应的列名。 在这里我想说一下,因为我用的是hibernate内部封装好的save方法,咱也不能去改…

HQL 标识符无效

这是报错 因为刚学HIbernate,很多小问题其实挺折磨人的 这是代码(我根据网上搜索的答案还有自己的判断测试,感觉应该可能是字段没有" "的问题) Configuration configuration new Configuration().configure();Session…

ORA-00904:标识符无效(太坑了!!)

ORA-00904:标识符无效 解决办法(Oracle字段名区分大小写的坑) 问题描述 我在使用jpa或者mybatis集成Oracle进行where查询的时候发现一直出现: java.sql.SQLSyntaxErrorException: ORA-00904: “USER0_”.“PWD”: 标识符无效 下面是问题代码: Testvoid…

Unity⭐️VideoPlayer

文章目录 🚩 解决安卓视频播放模糊 🚩 解决安卓视频播放模糊 1️⃣ 设置RawImage的size跟原视频一致 2️⃣ RawImage的抗锯齿Anti-Aliasing改为8 3️⃣ 勾选sRGB 4️⃣ 视频编码设为H264 大家还有什么问题,欢迎在下方留言! 如…

ᑋᵉᑊᑊᵒ ᵕ̈ᰔᩚ

** ** 第一章 大数据概述 ** ** 1.大数据技术的产生 2.大数据的基本概念 什么是大数据? 定义:大数据是指无法在一定时间内用常规软件工具进行抓取,管理和处理的数据集合 经典案例: (1)啤酒与尿布 (2)谷歌与流感 大数据的范…

linux shell中 '' ``的区别

环境:ubuntu 10 符号:"" / / 相信很多linux初学者都会被这三个符号迷惑,我将用一个例子说明他们的区别 现在我按照替换执行灵活度排个序: :大笨蛋,你给他什么他就显示什么,不动脑子 " ":勉强吧&#xff…

【shell】``和$()作用与区别

和$()的作用 将一条命令的执行结果赋给一个变量,有两种方法 1、使用反引号 (数字键1左边的键,tab键上面,英文方式输入) 如:aecho "hello world"; 即将命令 echo "hello world"的输出赋给变量a 2、可以使用…

获取流媒体地址

流媒体地址大搜捕-网上视频“本地”看 http://www.sina.com.cn 2003/08/22 14:05 赛迪网--中国电脑教育报   文/巧克力   由于带宽的限制,要想流畅地观看网上视频节目,对于多数网友来说并不是件容易的事情。因此不少朋友选择了利用下载工具将这些流…

流媒体相关介绍

流媒体相关介绍 一、流媒体主要实现方式二、流媒体技术2.1 流媒体2.2 直播2.3 流协议2.3.1 HLS 协议2.3.2 RTMP 协议2.3.3 RTSP 协议2.3.4 MPEG-DASH2.3.5 WebRTC 协议 2.4 服务器端技术2.4.1 GStreamer2.4.2 Live5552.4.3 其它 三、HTML5媒体标签3.1 audio3.2 video3.3 canvas…

流媒体地址文件制作方法

在我的博文使用 Windows Media Center 看网络电视中,我介绍了如何为Windows Media Center添加流媒体文件来收看网络电视节目。因为大多数的网络电视点播地址经常发生变动,我无暇进行及时更新,本着授人以鱼不如授人以渔的原则,我贴…