当前位置: 首页 > news >正文

单片机嵌入式滤波算法库

kw_ucFiltering库说明

本科针对常用的滤波算法进行汇总,主要包括:

  • 一阶滤波算法
  • 平滑滤波
  • 中位值滤波
  • 限幅
  • 卡尔曼滤波

截至目前(20250508)滤波算法持续更新中。

本库开源连接地址:gitee连接

一阶滤波算法实现


原理

一阶滤波算法的物理模型是一阶RC低通滤波电路,其传递函数通常表达为:

G ( s ) = 1 1 + τ s G(s)=\frac{1}{1+\tau s} G(s)=1+τs1

其中τ为时间常数。

其时域表达式通常为:

y ( k ) = ( 1 − a ) ⋅ y ( k − 1 ) + a ⋅ x ( k ) y(k) = (1-a) \cdot y(k-1) + a \cdot x(k) y(k)=(1a)y(k1)+ax(k)

其中

a = T T + τ a=\frac{T}{T+τ} a=T+τT


C库

主要变量

项目变量类型说明
1kw_ucAlgorTrans1_s结构体basic:基本类型
T:时间常数
a,b:惯性系数
*x:数据输入
y:滤波输出

主要函数

项目函数说明
1kw_ucAlgorTrans1Init初始化滤波函数
2kw_ucAlgorTrans1Link连接滤波函数的输入
3kw_ucAlgorTrans1Run滤波函数周期运行
4kw_ucAlgorTrans1CFG滤波函数配置
5kw_ucAlgorTrans1Result滤波函数结果,即为滤波输出

测试代码

#include "kw_ucAlgorCFG.h"timer_t timer;
kw_ucAlgorTrans1_s trans1;void timerCB(void *arg)
{kw_ucAlgorTrans1Run(&trans1);
}void main()
{float dataIn;float resultOut;kw_ucAlgorTrans1Init(&trans1, 10);kw_ucAlgorTrans1CFG(&trans1, 1000);kw_ucAlgorTrans1Link(&trans1, &dataIn);timer_init(&timer, 10, timerCB, NULL);timer_start(&timer);while (true){dataIn = randf(10);kw_ucAlgorTrans1Result(&trans1, &resultOut);printf("%.2f\n", resultOut);delay(10);}
}

相关文章:

  • 3.2.3 掌握RDD转换算子 - 5. 合并算子 - union()
  • 人工智能可信度新突破:MIT改进共形分类助力高风险医学诊断
  • AI领域的MCP(Model-Centric Paradigm)
  • vue 中如何使用region?
  • 一、Redis快速入门
  • 《社交应用架构生存战:React Native与Flutter的部署容灾决胜法则》
  • 关于Bearer Token
  • IBM BAW(原BPM升级版)使用教程第五讲
  • k8s术语之Horizontal Pod Autoscaling
  • PlatformIO
  • RSS 2025|斯坦福提出「统一视频行动模型UVA」:实现机器人高精度动作推理
  • 结合Splash与Scrapy:高效爬取动态JavaScript网站
  • k8s术语之job
  • 使用mermaidchart 显示graph LR
  • OCCT中的布尔运算
  • C++GO语言微服务和服务发现
  • C++GO语言微服务基础技术①
  • Qt/C++面试【速通笔记八】—Qt的事件处理机制
  • 深入理解二叉树(2)
  • 【软考-高级】【信息系统项目管理师】【论文基础】采购管理过程输入输出及工具技术的使用方法
  • 国防部:奉劝有关国家不要引狼入室,甘当棋子
  • 国家主席习近平同普京总统举行小范围会谈
  • 大四本科生已发14篇SCI论文?学校工作人员:已记录汇报
  • 欧派家居:一季度营收降4.8%,目前海外业务整体体量仍较小
  • 深圳下调公积金利率,209万纯公积金贷款总利息减少9.94万
  • 太原一高中生指出博物馆多件藏品标识不当,馆方已邀请他和专家共同探讨