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

递推限幅消抖数字滤波函数的实现(C 语言,嵌入式 / Keil 通用)

前言在嵌入式系统、传感器采样、工业数据采集场景中瞬时尖峰、随机野值、信号抖动是最常见的干扰问题。直接使用原始数据极易导致控制误判、显示跳变、系统异常。本文介绍一种轻量、高效、鲁棒性极强的递推限幅 连续消抖数字滤波算法不占用大量 RAM、逻辑清晰、可直接在 Keil、STM32、51 等平台使用专门用于抑制野值、过滤抖动、跟随真实信号变化。一、滤波算法核心原理本滤波函数同时实现两大核心功能递推限幅限制单次数据最大变化幅度直接屏蔽瞬时尖峰野值连续消抖必须连续多次稳定在新范围才确认信号真实变化杜绝误判。设计目标正常稳定数据 → 直接输出跳变 / 抖动 / 野值 → 返回错误码0x80000000真实信号变化 → 连续稳定后自动跟踪更新。二、完整滤波函数实现标准 C / Keil 直接用c运行/***************************************************************** ** 函数名称filter ** 功能递推限幅 连续消抖 数字滤波抑制野值、跟随真实变化 ** 输入uint32_t value 当前采样值传感器/ADC/测距等 ** 输出正常数据 - 返回有效值跳变/野值/抖动 - 返回 0x80000000 ** 说明静态变量存储历史状态不占用额外RAM适合嵌入式平台 ******************************************************************/ uint32_t filter(uint32_t value) { // 静态变量保存上一次有效值、当前候选值、连续稳定计数 static uint32_t Normal 0, Saltus 0, i 0; uint32_t dif 0; // 差值绝对值缓存 uint32_t limt 1000; // 跳变门限可根据需求修改 // 1. 计算当前值与上一次有效值的差值绝对值 if(value Normal) dif value - Normal; else dif Normal - value; // 2. 数据正常差值 ≤ 门限直接更新并返回 if(dif limt) { Normal value; i 0; // 清零消抖计数 return Normal; } else { // 3. 第一次跳变记录候选值计数1返回野值标记 if(i 0) { Saltus value; i; return 0x80000000; } // 4. 连续稳定≥5次确认真实变化更新有效值 else if(i 4) { Normal value; Saltus value; i 0; return Normal; } // 5. 跳变验证中检查是否继续稳定在候选区间 else { // 计算与当前候选值的差值绝对值 if(value Saltus) dif value - Saltus; else dif Saltus - value; // 稳定在候选值附近 → 计数1 if(dif limt) i; // 出现新野值/跳变 → 重置计数1重新验证 else i 1; Saltus value; // 实时更新候选值动态跟踪 return 0x80000000; // 未确认稳定返回野值标记 } } }三、算法如何强力抑制野值核心机制很多传统限幅滤波一旦遇到跳变就容易误判而本算法通过动态跟踪 连续验证实现极强的野值抑制能力。1. 实时更新候选值动态跟踪c运行Saltus value; // 每次抖动都更新候选值无论数据轻微波动还是缓慢漂移算法都会跟踪最新值只要波动在门限内计数持续累积不会被 “卡死” 在旧值最终确认的是跳变后最稳定、最新的真实值而非最早跳变值。2. 出现新跳变立即重置计数防误判c运行if(dif limt) i; else i1;一旦数据再次超限 → 判定为新野值 / 新抖动计数直接重置为 1重新开始验证彻底杜绝偶然野值 → 累积计数 → 错误确认。3. 必须连续 5 次稳定才确认变化消抖核心连续 5 次都稳定在新范围 → 判定为真实信号变化任何一次偏离 → 打断计数孤立尖峰如3000 → 8000 → 3000会被直接过滤。四、本滤波算法的优势为什么更稳定✔ 极强野值抑制孤立尖峰、随机噪声、瞬时干扰直接屏蔽不会影响输出。✔ 真实变化不延迟信号缓慢漂移、阶梯变化时自动跟踪、及时确认。✔ 不占 RAM只使用 3 个静态变量适合单片机、资源受限系统。✔ 逻辑简单、执行快无浮点运算、无复杂队列适合高速采样场景。✔ 可配置性强只需修改limt门限和计数阈值即可适配温度、压力、测距、电流、按键等各种信号。五、测试验证函数Keil / 标准 C用于验证滤波效果生成带噪声的模拟数据观察滤波输出c运行/***************************************************************** ** 函数test_filter ** 功能滤波算法测试生成噪声数据 → 滤波 → 打印结果 ******************************************************************/ int test_filter(void) { /* 变量统一定义在头部ANSI C 兼容Keil */ const int POINTS_PER_ZONE 200; const int ZONE_COUNT 4; const int TOTAL_POINTS 800; const uint32_t BASE_DIST[ZONE_COUNT] {150000, 100000, 60000, 10000}; uint32_t raw[TOTAL_POINTS]; uint32_t filtered[TOTAL_POINTS]; int idx, zone, k, i; uint32_t base, noise; int noise_max; int valid_cnt, error_cnt, valid_change_cnt; uint32_t last_valid; int first_valid; int start, end; /* 生成带噪声的模拟数据 */ idx 0; for (zone 0; zone ZONE_COUNT; zone) { base BASE_DIST[zone]; noise_max (zone 3) ? 100 : 1000; for (k 0; k POINTS_PER_ZONE; k) { noise rand() % (noise_max); raw[idx] base noise; } } /* 执行滤波 */ for (i 0; i TOTAL_POINTS; i) { filtered[i] filter(raw[i]); } /* 打印结果 */ printf( 递推限幅消抖滤波测试 \n); for (zone 0; zone ZONE_COUNT; zone) { start zone * POINTS_PER_ZONE; end start POINTS_PER_ZONE; base BASE_DIST[zone]; printf(--- 区间 %d | 基准值%u ---\n, zone1, base); for (i start; i start 10 i end; i) { if (filtered[i] 0x80000000) printf(%d\t%u\t\tERROR\n, i, raw[i]); else printf(%d\t%u\t\t%u\n, i, raw[i], filtered[i]); } } return 0; }六、适用场景本滤波算法特别适合测距传感器激光 / 超声 / 雷达温度、压力、湿度等模拟量采集电流、电压采样按键消抖、开关信号滤波工业现场强干扰环境任何需要抑制野值 稳定输出的嵌入式系统七、总结递推限幅 连续消抖滤波是嵌入式开发中实用性极强的算法限幅屏蔽瞬时野值连续验证确保真实变化动态跟踪不滞后、不卡死超轻量、高速、跨平台兼容

相关文章:

递推限幅消抖数字滤波函数的实现(C 语言,嵌入式 / Keil 通用)

前言在嵌入式系统、传感器采样、工业数据采集场景中,瞬时尖峰、随机野值、信号抖动是最常见的干扰问题。直接使用原始数据极易导致控制误判、显示跳变、系统异常。本文介绍一种轻量、高效、鲁棒性极强的递推限幅 连续消抖数字滤波算法,不占用大量 RAM、…...

【AI工具】openclaw+离线模型

一、安装 1. 先换系统 apt 国内源(阿里云) # 1. 备份原来的源列表(重要!) sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak# 2. 执行替换,换成清华源 sudo sed -i s/archive.ubuntu.com/mirror…...

Claude封号潮下的开发者生存指南:从源码泄露到合规中转的全解析

📌 全文速览:本文深度拆解2026年春季席卷AI编程圈的Claude账号封禁浪潮以及Anthropic源码泄露事件,从技术根源到社区自救,再到终极解决方案,为你呈现AI开发者生存指南。Claude封号潮下的开发者生存指南:从源…...

全电发票普及,智蜂AI智能代账助力合规与高效

票据管理时代已至智蜂AI代账破局增效人工智能自动化智蜂财税专注AI 人工智能代账服务,以智能系统高效处理票据、记账、报税,搭配专业会计师人工审核把关,为中小微企业提供安全、高效、合规的一站式财税解决方案,助力企业降本增效…...

【Java】从源码深入理解 Stack

从源码深入理解 StackStack的整体架构Stack的成员变量Stack的构造函数Stack的常用方法:源码解读压栈:push()出栈:pop()获取栈顶元素:peek()判断是否为空:empty()查找元素:search()存储的元素个数&#xff1…...

ExplorerPatcher使用指南:3步恢复Windows经典界面体验

ExplorerPatcher使用指南:3步恢复Windows经典界面体验 【免费下载链接】ExplorerPatcher This project aims to enhance the working environment on Windows 项目地址: https://gitcode.com/GitHub_Trending/ex/ExplorerPatcher ExplorerPatcher是一款强大的…...

Comsol水力压裂:渗流 - 应力 - 损伤耦合模型探索

Comsol水力压裂 渗流-应力-损伤耦合模型 本模型采用Comsol软件模拟注水过程中的岩石损伤和孔隙水压发展,采用经典摩尔库伦准则和抗拉阶段准则计算损伤 无需借MATLAB计算损伤变量在Comsol里面采用内置模块计算损伤变量,计算效率高 岩石采用Weibull分布描述…...

小产能起步第一台设备怎么选?5-100MW半自动产线入门,曜华激光为你指路

对于刚踏入光伏组件制造领域的中小厂商而言,从一条小产能半自动产线起步,是务实而理性的选择。然而,面对从电池片到组件的十几道工序,第一台设备该选什么?本文从入门角度,梳理设备选型的优先级与判断标准。…...

COMSOL电磁超声仿真技术:基于5.6版本模型,精确检测L形铝板裂纹的电磁超声测量方法

COMSOL电磁超声仿真: Crack detection in L-shaped aluminum plate via electromagnetic ultrasonic measurements 版本为5.6,低于5.6的版本打不开此模型电磁超声检测(EMAT)在工业无损检测领域一直是个热门方向,最近在COMSOL 5.6上…...

纸箱压缩试验机哪个好

在包装行业,纸箱抗压性能直接决定着产品运输安全、仓储效率和企业成本控制。而纸箱压缩试验机(抗压试验机)就是衡量纸箱是否“扛得住”的核心设备。面对市面上琳琅满目的品牌与型号,很多企业主都会问:纸箱压缩试验机哪…...

【无标题】一次简笔

我是一名大一的学生,我未来想要从事计算机方面的工作。我充满理想有自信,相信我可以找到一份3w的工作,我想要到腾讯当技术岗位,我愿意花费精力和时间在这方面学习编程。我会每周拿出六天时间来潜心学习。“what doesnt kill me ma…...

【深伪检测】论文整体调研与梳理方法

一、单篇论文精读:抓核心信息(先“拆”后“懂”) 每篇论文都要完成「标题→摘要→引言→方法→实验→相关工作」的递进式阅读,目的是精准捕捉“这篇论文在解决什么问题、用了什么方法、做出了什么贡献”。标题摘要(10分…...

【枕上节令笺】清明食青团,一口咬尽江南春

最近下班有时间,都在捣鼓公众号文章,之前的两天一直沉迷于改主题、改完主题改内容排版、最后发现文章偏离主题写的太杂了,奈何语文水平太久没用了,就想到用写技术博客的总分总的写法去表诉文章…有热爱或想写公众号的同学一起交流…...

读取Excel数据(替换your_data.xlsx即可)

多输入vmd-pso-lstm多维时序预测模型(多输入单输出) ,价格仅为程序价格,不包含原理讲解 数据均为Excel数据替换数据就可以运行所有程序都经过验证,保证程序可以运行,具有良好的编程习惯,程序均包…...

用户智能体交互协议AG-UI(上)

三大Agent协议对比 我们之前已经学习了MCP 和 A2A两个重要的协议了,加上AG-UI,它们共同组成了Agent的三大通信协议体系。 不过,它们的定位各有侧重,并非非此即彼,而是协同使用,用形象的比喻来讲&#xff…...

2026跨境电商数据采集避坑指南:实测实在Agent如何终结“数字员工”的幻觉时代

【摘要】 2026年3月,跨境电商行业正式迈入“Agent驱动”的生产力新纪元。随着阿里巴巴Accio Work、腾讯云MAGIC Agent 2.0等工具的密集发布,传统基于脚本的爬虫正被具备自主决策能力的“数字员工”取代。然而,在实际业务落地中,通…...

免死金牌: OpenClaw + keepalived

文章目录背景解决方案查看IP检测脚本keepalived 配置演练故障openclaw-gateway.service背景 问题来自 小龙虾自杀, 当我让 OpenClaw 更新一些配置时, 它执行了一条 openclaw gateway stop 命令, 导致 OpenClaw 服务停止, 然后我就干瞪眼了, 还在傻等, 它甚至一句分别的话都没有…...

KiloClaw:为企业AI代理安全合规保驾护航

OpenClaw托管版KiloClaw:企业AI代理管理新方案由GitLab联合创始人Sid Sijbrandij和Scott Breitenother共同创立的Kilo,推出了面向企业的KiloClaw,它是OpenClaw平台的托管版本。该产品旨在为企业提供对员工使用AI代理执行代码库监控、邮件起草…...

告别API依赖!实测具备“看屏幕”能力的Agent,实在Agent如何重构企业自动化天花板?

在2026年这个被业界公认为“智能体元年”的当下,企业数字化转型已从简单的“系统上线”演进到“全量自动化”的深水区。然而,传统API接口的局限性与老旧系统的数据孤岛,始终是横亘在降本增效路上的大山。本文由「企服AI产品测评局」带来深度实…...

航美实木板:以匠心守健康,用实力赢信赖——一位经销商的真情告白

“一张好的板材,守护的不是一个人,而是一个家庭的健康与幸福。”说这句话的汪总,是实木行业的“老炮儿”,深耕实木定制多年的他,对木材“热胀冷缩必变形开裂”的特性深信不疑。直到刷到航美实木板的宣传视频&#xff0…...

An-Labeler:AudioLabellerV3 AI 辅助标注工具详解(自研Qt + FFT/模型自动标注)

An-Labeler V3:AudioLabeller AI 辅助标注工具详解(自研Qt + FFT/模型自动标注) Author: Code-keys (qq_37445230) Version: V3 (2026-03) 系列文章: An-Labeler:AudioLabeller 高效音视频标注工具 [AAn-Labeler:AudioLabellerV3 AI 辅助标注工具详解] 一、V3 版本更新概…...

多车环境下车载毫米波雷达是否会相互干扰?

在汽车工业迈向智能化与自动化的进程中,毫米波雷达已然成为了车辆感知体系中不可或缺的一部分。这种波长介于1毫米至10毫米之间的电磁波进行探测的装置,凭借其能够穿透雨雪、浓雾及强光直射的全天候工作能力,为高级驾驶辅助系统提供了关键的距…...

2.4.快速排序——先分区再递归,为什么它平均这么快却可能退化?

2.4.快速排序——先分区再递归,为什么它平均这么快却可能退化? 系列:搜索与排序 | 第 4 篇,共 16 篇 难度:⭐⭐⭐☆☆ 中等 标签:排序 快速排序 分治 随机化 三路快排 上一篇:2.3.插入排序——像…...

自注意力:句子里的词互相“看“对方——信息交流的艺术

自注意力:句子里的词互相"看"对方——信息交流的艺术(Version B) 📚 《从零到一造大脑:AI架构入门之旅》专栏 专栏定位:面向中学生、大学生和 AI 初学者的科普专栏,用大白话和生活化比喻带你从零理解人工智能 本系列共 42 篇,分为八大模块: 📖 模块一【A…...

注意力机制:AI 也会“走神“和“专注“——信息选择的智慧

注意力机制:AI 也会"走神"和"专注"——信息选择的智慧(Version B) 📚 《从零到一造大脑:AI架构入门之旅》专栏 专栏定位:面向中学生、大学生和 AI 初学者的科普专栏,用大白话和生活化比喻带你从零理解人工智能 本系列共 42 篇,分为八大模块: 📖…...

【ABAP】客转供 客户转供应商 cl_md_bp_maintain=>maintain 创建供应商

报错:未分配客户/供应商,您无法传输客户/供应商数据 这是因为如果创建的时候是作为客户的, 后面想要创建为供应商,所以调用的供应商创建/修改接口。 但是这时候,LFA1里面是没有供应商编号的,只有BUT000里面…...

破解厂区防控难题:远程控制联网报警器的技术优势与应用实践

一、厂区安全防控的时代挑战与技术革新在工业生产规模化、厂区安全管理标准化的发展趋势下,厂区安全防控已成为企业生产运营的核心工作。我国正处于厂区安防从 "人工巡检为主" 向 "技防联动" 转型的关键阶段,据行业数据显示&#xf…...

终极指南:如何免费解锁Cursor Pro功能,彻底解决API限制问题

终极指南:如何免费解锁Cursor Pro功能,彻底解决API限制问题 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve …...

30美元实现AI视觉革命:OpenGlass开源智能眼镜的平民化方案

30美元实现AI视觉革命:OpenGlass开源智能眼镜的平民化方案 【免费下载链接】OpenGlass Turn any glasses into AI-powered smart glasses 项目地址: https://gitcode.com/GitHub_Trending/op/OpenGlass 当商业智能眼镜以数千元价格将普通用户拒之门外时&…...

本科论文AI率高不高影响答辩?这个问题要搞清楚

很多同学AI率超标之后第一个问题就是:这会不会影响我参加答辩? 这个问题的答案取决于你的学校是怎么规定的,也和你超标的程度有关。我来帮你分析清楚。 各高校对AI率的处理方式 目前各高校的处理方式大致分三类: 第一类&#…...