单片机嵌入式滤波算法库

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)=(1−a)⋅y(k−1)+a⋅x(k)

其中

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


C库

主要变量

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

主要函数

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

测试代码

c 复制代码
#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);
    }
}
相关推荐
夜月yeyue5 分钟前
STM32 DMA 双缓冲采样
linux·stm32·单片机·嵌入式硬件·系统架构
羊羊小栈35 分钟前
Uplift营销供应链协同决策系统(基于Uplift因果推断与运筹优化算法)
前端·人工智能·算法·毕业设计·大作业
西城微科方案开发1 小时前
SIC8P370D2L-PLP16 8位OTP单片机 低功耗多功能MCU详解
单片机·嵌入式硬件
金融小师妹1 小时前
AI因子共振模型显示:金银比突破区间上沿,白银定价逻辑进入再校准阶段
人工智能·算法·均值算法·线性回归
J2虾虾1 小时前
C语言 typedef 用法
c语言·数据结构·算法
hunterkkk(c++)1 小时前
线段树例题
算法
故渊at2 小时前
第二板块:Android 四大组件标准化学理 | 第七篇:Activity 页面载体与任务栈算法
android·算法·生命周期·activity·任务栈
兰令水2 小时前
leecodecode【区间DP+树形DP】【2026.6.10打卡-java版本】
java·算法·leetcode
weixin199701080162 小时前
[特殊字符] 1688开放平台API Sign签名算法详解(Java / Python / PHP 实现)
java·python·算法