数字滤波算法
文章平均质量分 50
温人之周.
这个作者很懒,什么都没留下…
展开
-
傅里叶变换算法
傅里叶变换的核心在于,“任何连续周期信号可以由一组适当的正弦曲线组合而成”,在这个基础上对信号的中特定频率的正弦波进行分解或者重组,基于频率方面分析波形。一、傅里叶变换的意义 近似周期性的方波(橙色),可采用6组正弦波(蓝色)合成,这是傅里叶的基础。 对数字信号处理或者工程数学有一定基础,就明白傅里叶变换的价值。一般情况下的信号或者波形随时间变化,称为时域信号,时域(Time domain)是描述数学函数或物理信号对时间的关系。而以频率和幅度表示信号称为频域,频域(frequency原创 2022-05-04 08:50:07 · 16471 阅读 · 0 评论 -
字符串匹配KMP算法
一、strstr 嵌入式软件开发时会在某个长字符串中,检索出现指定字符串标识的需求,最常用的库函数就是strstr。其源码有很多版本,常用经典实现方式:char *strstr(const char *str1, const char *str2) { char *cp = (char *) str1; char *s1, *s2; if (!*str2) return ((char *) str1); while (*cp) { s1原创 2022-05-04 08:16:40 · 11920 阅读 · 0 评论 -
数据流与环形缓冲
对嵌入式系统的数据接收与解析,数据缓存与发送,因为时序或者空间要求,两者需要异步处理。对于这种数据流,采用环形队列,先进先出的方式保存。一、环形队列 队列是一种常用的数据结构,按照“先进先出”的原则进行操作的,环形队列是数据元素存储一轮后,再从头部开始入队,首尾相接,是一个装载固定数量元素的闭环。typedef struct{ uint8_t data[RING_FIFO_SIZE]; uint8_t head; uint8_t tail;} ring_fifo_原创 2022-05-04 07:57:21 · 11732 阅读 · 0 评论 -
四种排序算法
嵌入式系统中尤其涉及数据采集的,需要对数据进行简单处理后再进行业务层功能,考虑到硬件的资源限制,对于数据排序,一般只是应用这四种简单的排序算法。一、冒泡排序 冒泡排序(bubble sort)是一种C语言入门级的简单排序算法,重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序错误进行交换。重复地检查对比直到没有相邻元素需要交换,也就是说该元素列已经排序完成。算法的名字由来是因为越小(大)的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同水中的气泡最终会上浮到顶端一样,故名“原创 2022-04-20 20:08:41 · 14762 阅读 · 0 评论 -
MD5算法
1、MD5概念 MD5信息摘要算法(MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。输入任意长度的数据经过处理,输出都是128位的信息(数字指纹)。不同的输入得到的不同的结果,在有限范围内是唯一的,毕竟字符的组合是无限的,大于2^128种。MD5加密过程是一个有损的加密过程,几乎不能还原出原始数据。2、MD5算法(C语言版)2.1、md5.h#ifndef MD5原创 2022-04-19 08:45:31 · 14846 阅读 · 1 评论 -
AES加密/解密算法
需要与外界进行数据交互传输的电子产品,为保证数据安全,一般会对明文进行加密处理。总的来说就是将真正需要传输的内容转换成无法理解的数据,接收方通过预先定义的方式还原,防止第三方截取篡改。比如欧盟对数据隐私有严格的条例GDPR标准。加密算法很多,对于简单的嵌入式产品,使用对称加密算法,即加密和解密使用相同的秘钥,方便快捷。AES就属于这种。1、秘钥类型 AES加密按秘钥的长度分为128位(比特)、192位和256位,一般记为AES-128、AES-192和AES-256。一般简短数据采用AES-128原创 2022-04-18 09:06:28 · 24818 阅读 · 1 评论 -
正态分布过滤疏忽误差算法
测量系统中误差分为系统误差、随机误差、疏忽误差三种。系统误差一般是硬件精度或缺陷导致;随机误差是偶然产生,诸多外界因素微小变化共同导致,它服从统计规律的;疏忽误差则无规律可循,且明显和事实不符合。疏忽误差的样本值偏离了总体的平均值,在样本足够多且服从正态分布的情况下,通过一系列数理统计算法过滤坏样本。 正态分布的68-95-99.7规则 均值到左一和右一个标准差之间的定积分值是68% ,均值到左二和右二个标准差之间的定积分值是95% ,均值到左三和右三个标准差之间的定积分值是99.7% 。一般原创 2022-04-17 18:28:05 · 13864 阅读 · 0 评论 -
滑动平均滤波算法
算数平均滤波需要多次采样后才能得出一个有效值,如果被检测量变化较快,多次采样后才输出一次有效值,表现就是系统反应迟钝。将当前采样值与之前连续的历史采样值进行平均,这样每次采样结束即可得出有效值。因为参与计算的历史值个数固定且内容不断前移覆盖更新,类似滑动的数据块窗口,因此成为滑动平均滤波算法。 假如采样6次,每次使用最近5个历史值与当前最新值求算数平均值,输出一个有效值;下次采样时再覆盖最早时间的点做同样操作。类似环形数组,求最近6个值的平均值。 滑动平均滤波,输出的结果与先前历史记录有关,假如原创 2022-04-17 09:30:00 · 22704 阅读 · 3 评论 -
算数平均滤波算法
随机干扰随着数据样本的增加,其统计平均值越趋于零,对被检测物理量进行连续多次采样,然后求其算数平均值作为有效采样值,就可以抑制随机干扰。以检测电池电压为例,因为负载变化,比如开启大功率模块,电池电压瞬时值会下降,关闭时会有个小的回升。假设期望1分钟更新一次,需要在这个频率的基础上按倍提高检测频率,如每15秒采集一次,取4次的平均值作为1分钟一次的有效值。#define SAMPLE_NUM 4int vBat[SAMPLE_NUM];//假设已经通过其他方式采集到了4次电压值,且缓存在vBa原创 2022-04-16 10:55:36 · 14563 阅读 · 0 评论 -
差值滤波补偿算法
现实中的物理量都是连续的模拟量,其变化需要一定时间,且在短时间内的变化量有一个合理的限度。例如气温,短时间内前后两个采样值的差值必定有个最大范围,基于这个条件可以对其中明显受到干扰的无效值进行剔除。本次的无效采样值排除后,再根据前面数据的变化趋势,预测一个合理的数据替代本次的问题值,而不是直接使用上次的结果。1、 什么样的采样值为无效值 根据物理量的检测范围,和在采样间隔内最大的变化可能来定义,如气温检测,可定义温度在正负50度之间,如果采样间隔是1分钟,那气温在1分钟内最多变化5度。实际应用需要原创 2022-04-15 08:54:08 · 14073 阅读 · 2 评论 -
数字滤波算法——中值滤波
程序判断滤波有一个潜在的隐患原创 2021-10-07 20:10:41 · 22690 阅读 · 0 评论 -
数字滤波算法——程序判断滤波
在实际生产中,相邻两次采样值之间的变化都有一个合理的限度。如果相邻两次采样值之间的变化为超过预定的范围,说明该采样值未收到明显干扰,可以采信。如果相邻两次采样值之间的变化超过预定范围,说明采样值收到明显干扰,不能采信。对于不可信得采样数据,必须输出一个合理的替代数据,以保证采样序列的连续性和完整性。在要求不高的场合,可以用前一个采样数据来替代。这种由程序进行简单判断的数字滤波算法称为“程序判断滤波”,也称“限幅滤波”。相应程序如下:#define D 10 //相邻两次采样之间最大允许变化值原创 2021-09-29 20:09:14 · 19314 阅读 · 0 评论 -
嵌入式系统数字滤波算法的特点
很多嵌入式系统都需要通过A/D转换方式采集模拟信号,为了获取尽可能真的结果需要进行滤波。 数字滤波的不足之处就是要消耗一定的CPU资源,在进行实时的信号处理时要注意这一点。当信号为高频信号,干扰信号为低频信号时,需要采用高通滤波器。而实时高通滤波算法受CPU速度的限制,往往力不从心,而硬件高通滤波器确很容易处理这种实时信号。当有用信号为低频信号,干扰信号为高频信号时,需要采用低通滤波器。由于低通滤波器往往体积较大,且对CPU资源的消耗较少,所以,数字滤波主要应用领域为实时低通滤波。...原创 2021-09-27 16:09:00 · 18452 阅读 · 0 评论