c语言低通滤波程序,一阶低通滤波器c语言
1. 一阶滤波算法的原理
一阶滤波,又叫一阶惯性滤波,或一阶低通滤波。是使用软件编程实现普通硬件RC低通滤波器的功能。
一阶低通滤波的算法公式为:
Y(n)=αX(n) (1-α)Y(n-1)
式中:α=滤波系数;X(n)=本次采样值;Y(n-1)=上次滤波输出值;Y(n)=本次滤波输出值。
一阶低通滤波法采用本次采样值与上次滤波输出值进行加权,得到有效滤波值,使得输出对输入有反馈作用。
2. 一阶滤波算法的程序(适用于单个采样)
[cpp] view plain copy
1. #define a 0.01 // 滤波系数a(0-1)
2.
3. char value; //滤波后的值
4. char new_value; // 新的采样值
5.
6. char filter()
7. {
8. char new_value;
9. new_value = get_ad();
10. return 0.01*value + (1-0.01)*new_value;
11. }
[cpp] view plain copy
1.
3. 一阶滤波算法的不足
1. 关于灵敏度和平稳度的矛盾
滤波系数越小,滤波结果越平稳,但是灵敏度越低;
滤波系数越大,灵敏度越高,但是滤波结果越不稳定。
一阶滤波无法完美地兼顾灵敏度和平稳度。有时,我们只能寻找一个平衡,在可接受的灵敏度范围内取得尽可能好的平稳度。而在一些场合,我们希望拥有这样一种接近理想状态的滤波算法。即:
当数据快速变化时,滤波结果能及时跟进(灵敏度优先);
当数据趋于稳定,在一个固定的点上下振荡时,滤波结果能趋于平稳(平稳度优先)。
2. 关于小数舍弃带来的误差
一阶滤波算法有一个鲜为人知的问题:小数舍弃带来的误差。 比如: 本次采样值=25,上次滤波结果=24,滤波系数=10, 根据滤波算法:
本次滤波结果=(25*10+24*(256-10))/256=24.0390625
但是,我们在单片机运算中,很少采用浮点数。因此运算后的小数部分要么舍弃,要么进行四舍五入运算。这样一来,本例中的结果24.0390625就变成了24。假如每次采样值都=25,那么滤波结果永远=24。也就是说滤波结果和实际数据一直存在无法消除的误差。
c语言低通滤波程序,一阶低通滤波器c语言相关推荐
- 一阶低通滤波和一阶高通滤波的C++实现
[转自]阳光下的奔跑_FC 傅立叶变换,拉普拉斯变换和Z变换 对于信号分析而言,傅立叶变换是必不可少的,我们都知道傅立叶变换是把系统从时域变换到频域进行分析,那么拉普拉斯变换和Z变换是干什么的?简单的 ...
- opencv 高通滤波和低通滤波_一阶低通滤波原理详解
在汽车标定中,使用最多的滤波算法即低通滤波,很多朋友可能知道怎么标定,但是不清楚具体的原理,因此本文将介绍一阶低通滤波的原理.算法建模仿真和优缺点: 一阶滤波算法的原理 一阶滤波,又叫一阶惯性滤波,或 ...
- 一阶低通滤波器方程_一阶低通滤波原理详解
在汽车标定中,使用最多的滤波算法即低通滤波,很多朋友可能知道怎么标定,但是不清楚具体的原理,因此本文将介绍一阶低通滤波的原理.算法建模仿真和优缺点:一阶滤波算法的原理 一阶滤波,又叫一阶惯性滤波,或一 ...
- 一阶RC低通滤波算法原理与实现
文章目录 1. 一阶低通滤波算法原理 2. 一阶滤波算法的特点 3. 基本算法的例程 4. 优化:减少乘.除的运算次数以提高运算速度 5. 改进:动态调整滤波系数 动态调整滤波例程 本文整理自网络,参 ...
- 用理想低通滤波器在频率域实现低通滤波、高通滤波。
文章目录 理想低通滤波 理想高通滤波 总结: 在matlab中,处理频域图像的过程大概为: 1.对图像进行傅里叶变换. 2.为了方便构建滤波器,将频域图像中心化(即将0频显示在图像中心) 3.设计所需 ...
- 数字图像处理学习笔记5:频率域滤波1(傅里叶频谱图,低通滤波-平滑,高通滤波-锐化)
文章目录 前言 一.傅里叶变换:傅里叶频谱图 二.低通滤波 1.理想低通滤波 2.布特沃斯低通滤波 3.高斯低通滤波 4.小结 三.高通滤波 1.理想高通滤波 2.布特沃斯高通滤波 3.高斯高通滤波 ...
- 【滤波器学习笔记】一阶RC低通滤波
一阶RC低通滤波 从模拟到数字 本文整理自网络.<匠人手记>等书籍文章 模拟电路低通滤波时域.频域 软件低通滤波 典型电路 图1 典型RC电路 直流.交流.脉冲信号都可以用它 时域 电容电 ...
- 一阶低通滤波介绍及simulink模型
一阶低通滤波 背景介绍 低通滤波是一种过滤方式,规定低频信号能正常通过,而超过设定临界值的高频信号则被阻隔.减弱.低通滤波可以简单的认为:设定一个频率点,当信号频率高于这个频率时不能通过,在数字信号中 ...
- 单片机ADC采样算法----一阶低通滤波
关于低通滤波,先看一下百度百科上的定义. 算法实现的公式如下: y(n) = q*x(n) + (1-q)*y(n-1) 其中Y(n)为输出,x(n)为输入,y(n-1)为上一次输出值,其中 ...
最新文章
- 期未课程设计:基于SSM的产品销售管理系统
- 中国非动物胶市场来产销需求及发展潜力研究报告2022版
- 中报亮眼,阅文的增长“飞轮”是如何练成的?
- hdu 5491 The Next(数学模拟)
- 不通过寄存器确定数据的长度 + 案例
- leetcode -- 129. 求根到叶子节点数字之和
- 借助码云快速安装 golang.org/x/lint/golint 和 golang.org/x/tools/ 等依赖
- [BZOJ2655] calc
- 动态顺序图可视化控件
- UVA10407 Simple division【同余+一阶差分】
- 有效软件测试 - 50条建议 - 需求阶段
- Python:利用xlwt设置Excel单元格格式
- [组合计数] BZOJ 3505 [Cqoi2014]数三角形
- hping3的编译和安装
- java 微信公众号之授权登录
- 遭遇Win32.Loader.c,Trojan.PSW.Win32.GameOnline,Trojan.PSW.Win32.AskTao等1
- 2021-2027全球与中国可持续性蛋白质市场现状及未来发展趋势
- java 甘特图_Java报表软件--甘特图(Gantt chart)深度解析
- 普元与达梦的多数据源配置
- 2022年5月15日小记