常见滤波方式的区别的优势

一. 限幅滤波法

给定一个最大偏差X,如果本次值与上次差值小于X,则本次有效,否则无效,使用上次值代替。

#incldue <stdio.h>#define X 2
int lastvalue;
//限幅滤波法
int filter(void)
{int nowValue ;nowValue = getValue();if (abs(nowValue - lastvalue) > X){return lastValue}else{return nowvalue;}lastValue = nowValue;
}

二. 中位值滤波法

采样N次值,对这N个值按大小排序,取中间值为本次有效值.

//中值滤波
uint16_t GetADC1Average(int num)
{uint16_t AdcValueBuf[N] = {0},AdcValuetemp=0;unsigned int count=0,i=0,j=0;uint32_t sum = 0;for(count=0;count<N;count++)AdcValueBuf[count]=filter_yijie(num);//冒泡排序for(j=0;j<N-1;j++){for(i=0;i<N-j;i++){if(AdcValueBuf[i] > AdcValueBuf[i+1]){AdcValuetemp = AdcValueBuf[i];AdcValueBuf[i] = AdcValueBuf[i+1];AdcValueBuf[i+1] = AdcValuetemp;}}}return AdcValueBuf[(N - 1) / 2];
}

三. 算术平均滤波法

连续采用N个值进行算数平均运算.

int Filter_Value;
// 算术平均滤波法
#define FILTER_N 12
int Filter() {int i;int filter_sum = 0;for(i = 0; i < FILTER_N; i++) {filter_sum += Get_AD();delay(1);}return (int)(filter_sum / FILTER_N);
}

四. 中位值平均滤波法

取样值去掉最大最小,再取平均值

//中值滤波
//采样若干次,舍弃较大数据和较小数据,然后将中间值平均
#define N 300//采样次数
#define BAN 100 //舍弃数据
uint16_t GetADC1Average(int num)
{uint16_t AdcValueBuf[N] = {0},AdcValuetemp=0;unsigned int count=0,i=0,j=0;uint32_t sum = 0;for(count=0;count<N;count++)AdcValueBuf[count]=filter_yijie(num);//冒泡排序for(j=0;j<N-1;j++){for(i=0;i<N-j;i++){if(AdcValueBuf[i] > AdcValueBuf[i+1]){AdcValuetemp = AdcValueBuf[i];AdcValueBuf[i] = AdcValueBuf[i+1];AdcValueBuf[i+1] = AdcValuetemp;}}}for(count=BAN;count<N-BAN;count++)sum+=AdcValueBuf[count];return ((uint16_t)((float)sum/(N-BAN*2)));
}

五. 一阶滞后滤波

取α = ( 0 , 1 ) α=(0,1)α=(0,1),f i l t e r d a t a = ( 1 − α ) 本 次 采 样 值 + α 上 次 滤 波 结 果 filter_{data} = (1-\alpha)本次采样值+\alpha 上次滤波结果filterdata​=(1−α)本次采样值+α上次滤波结果

//一阶滞后滤波
#define a 0.05
uint16_t value;
float value_yijie;
uint16_t filter_yijie(int num){uint16_t new_value;new_value = AD_Value[num];value_yijie = ((1-a)*value + a*new_value);value = new_value;return (uint16_t)value_yijie;
}

六. 卡尔曼滤波

uint16_t KalmanFiter(uint16_t inData) {static float prevData = 0;//上一个数据//q控制误差,r控制响应速度static float kalman_adc;uint16_t kal=0;static float p = 1,q = 0.01,r = 10,kGain = 0;p= p + q;kGain = p / (p+r);//计算卡尔曼增益kalman_adc = prevData + (kGain * (inData - prevData));//计算本次滤波估计值p = (1-kGain)*p;//更新测量方差prevData = kalman_adc;kal = (uint16_t)(kalman_adc*10)%10;if(kal>=5)kalman_adc++;return (uint16_t)kalman_adc;
}

七. 一阶滞后滤波+卡尔曼滤波

在采样值与优化值相差大于某值时采用一阶滞后滤波算法,小于该值时采用卡尔曼滤波算法;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/746340.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软件测试 —— 测试用例设计报告

写出测试网站的测试用例&#xff0c;测试网站具体内容可看团购网站系统需求说明书1.2.doc 一、流程1&#xff1a;注册→登录 图1&#xff1a;注册->登录流程图 1、 使用场景设计法设计测试用例 1&#xff09; 找出基本流和备选流 基本流注册用户-成功登录系统备选流1注册…

Jenkins cron定时构建触发器

from&#xff1a; https://www.jenkins.io/doc/book/pipeline/syntax/#cron-syntax 以下内容为根据Jenkins官方文档cron表达式部分翻译过来&#xff0c;使用机翻加个人理解补充内容&#xff0c;包括举例。 目录 介绍举例&#xff1a;设置方法方法一&#xff1a;方法二&#xf…

3.2_1 虚拟内存的基本概念

3.2_1 虚拟内存的基本概念 虚拟存储技术也是存储空间扩充的一种技术&#xff0c;它比交换、覆盖技术要更先进一些。 &#xff08;一&#xff09;传统存储管理方式的特征、缺点 对于这种传统的存储管理方案&#xff0c;很多暂时用不到的数据也会长期占用内存&#xff0c;导致内存…

R 语言patchwork包拼图间隙

在R语言中&#xff0c;patchwork包是一个非常强大的工具&#xff0c;允许你轻松地将多个图表拼接在一起。如果你希望调整拼图间的间隙&#xff08;即图表之间的空白区域&#xff09;&#xff0c;可以通过使用plot_layout()函数来实现&#xff0c;其中可以指定guides参数和spaci…

【数据结构和算法初阶(C语言)】栈的概念和实现(后进先出---后来者居上的神奇线性结构带来的惊喜体验)

目录 1.栈 1.1栈的概念及结构 2.栈的实现 3.栈结构对数据的处理方式 3.1对栈进行初始化 3.2 从栈顶添加元素 3.3 打印栈元素 3.4移除栈顶元素 3.5获取栈顶元素 3.6获取栈中的有效个数 3.7 判断链表是否为空 3.9 销毁栈空间 4.结语及整个源码 1.栈 1.1栈的概念及结构 栈&am…

Codeforces Round 933 (Div. 3)

比赛地址传送门 A. Rudolf and the Ticket 题目大意&#xff1a; 给定两个数组和一个 k&#xff0c;要求从两个数组中各选一个数求和不大于 k&#xff0c;有多少种方案 思路&#xff1a; 维护一个数组 f[i] 代表小于等于 i 的数字的数量&#xff0c;遍历另一个数组&#xff0…

遇到:java.lang.reflect.InaccessibleObjectException: Unable to make错误应该如何解决

遇到 "java.lang.reflect.InaccessibleObjectException: Unable to make" 错误是因为你的代码尝试访问了一个不可访问的对象或方法。这通常会发生在使用反射机制时&#xff0c;尝试访问私有或受限制的成员时。要解决这个问题&#xff0c;你可以考虑以下几个步骤&…

高压辊磨机(辊压机)在矿物加工领域应用广泛 目前本土企业处于向高端转型阶段

高压辊磨机&#xff08;辊压机&#xff09;在矿物加工领域应用广泛 目前本土企业处于向高端转型阶段 高压辊磨机又称为辊压机、挤压磨&#xff0c;是基于料层粉碎原理设计的一种干式辊磨设备。高压辊磨机结构形式多样&#xff0c;但原理基本相似&#xff0c;主要由机架、高压工…

浅谈C++绑定器bind1st、bind2nd和函数对象function

今天我们先来谈谈C 标准库里面的绑定器bind1st&#xff0c;bind2nd 和函数对象function C 绑定器和函数对象 一、绑定器二、函数对象 一、绑定器 虽然在C11标准中这两个绑定函数已经被弃用&#xff0c;但仍然值得我们深入思考其底层原理。从字面上理解&#xff0c;“绑定” 这…

【3】文件读写

Python 读取文件的三种常见方法 使用open()函数打开文件&#xff0c;并使用read()方法读取文件的内容。例如&#xff1a; file open("filename.txt", "r") content file.read() file.close()使用with语句打开文件&#xff0c;并使用readlines()方法读取…

Explain

Explain EXPLAIN是MySQL提供的一种用于分析SQL查询执行计划的工具&#xff0c;通过它我们可以深入了解数据库如何执行一条SQL语句&#xff0c;以及优化器在选择索引、访问表和排序数据等方面的决策。 我整理了一份思维导图方便更好查看各个参数的意义&#xff0c;红色表示比较…

RabbitMq踩坑记录

1、连接报错&#xff1a;Broker not available; cannot force queue declarations during start: java.io.IOException 2.1、原因&#xff1a;端口不对 2.2、解决方案&#xff1a; 检查你的连接配置&#xff0c;很可能是你的yml里面的端口配置的是15672&#xff0c;更改为5672即…

css超出部分显示省略号

目录 前言 一、CSS单行实现 二、CSS多行实现&#xff08;CSS3出的&#xff0c;兼容性需要注意&#xff09; 三、微信小程序超过2行出现省略号实现 四、JavaScript脚本实现 前言 CSS文本溢出就显示省略号&#xff0c;就是在样式中指定了盒子的宽度与高度,有可能出现某些内…

LLM - 大语言模型(LLM) 概述

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://blog.csdn.net/caroline_wendy/article/details/136617643 大语言模型(LLM, Large Language Model)的发展和应用是一个非常广泛的领域&#xff0c;涉及从早期的统计模型到现代基于深度学…

【AI+CAD】(二)LLM和VLM生成结构化数据结构(PPT/CAD/DXF)

当前LLM和VLM在PPT生成任务上已经小有成效,如ChatPPT。 @TOC 1. PPT-LLM LLM根据用户的instruction生成规范的绘制ppt的API语句:即使是最强的GPT-4 + CoT也只能达到20-30%的内容准确度。 LLM输入:User_instruction(当前+过去)、PPT_content、PPT_reader_API。其中 PPT_rea…

Pandas教程16:DataFrame列标题批量重命名+空df数据判断+列名顺序重排

---------------pandas数据分析集合--------------- Python教程71&#xff1a;学习Pandas中一维数组Series Python教程74&#xff1a;Pandas中DataFrame数据创建方法及缺失值与重复值处理 Pandas数据化分析&#xff0c;DataFrame行列索引数据的选取&#xff0c;增加&#xff0c…

Latex 超长矩阵如何处理显示问题

问题 矩阵内容太多&#xff0c;不能完全显示。下面是我的处理方法。 双栏论文中矩阵跨栏显示 使用 \begin{figure*}给公式包起来&#xff0c;跨双栏 \begin{figure*}[t]\begin{equation}T_{PRY} \left[% \setlength\arraycolsep{2.5pt}\begin{array}{cccc}A & B …

面试经典150题——随机链表的复制

​前两天断更了两天有点事情&#x1f917; 1. 题目描述 2. 题目分析与解析 2.1 思路一 开始还是没什么思路&#xff0c;没思路那就先把题目解决不管方法的好坏。如果不考虑复杂度&#xff0c;该怎么解决&#xff1f; 可以有这样的一种思路&#xff1a; 首先复制链表的所有节…

【python绘图】turle 绘图基本案例

文章目录 0. 基础知识1. 蟒蛇绘制2. 正方形绘制3. 六边形绘制4. 叠边形绘制5. 风轮绘制 0. 基础知识 资料来自中国mooc北京理工大学python课程 1. 蟒蛇绘制 import turtle turtle.setup(650, 350, 200, 200) turtle.penup() turtle.fd(-250) turtle.pendown() turtle.pen…

jeesite列表jqGrid表格底部汇总,基于onSelectRow和onSelectAll实现选中行汇总合计

一、最终效果图 二、表格启用复选框并初始化赋值 onSelectAll: function() { calc_sum(); }, onSelectRow: function() { calc_sum(); },// 加载成功后执行事件 ajaxSuccess: function(data){var dy = 0;var glbzqmrsdtyg = 0;var glbzqmrsschyg = 0;var glbzqmrsqtcy …