STM32采集传感器数据通过排序取稳定值

news2025/1/9 1:18:05

一、前言

在物联网、单片机开发中,经常需要采集各种传感器的数据。比如:温度、湿度、MQ2、MQ3、MQ4等等传感器数据。这些数据采集过程中可能有波动,偶尔不稳定,为了得到稳定的值,我们可以对数据多次采集,进行排序,去掉最大和最小的值,然后取平均值返回。

image-20230525140855726

image-20230525140932125

二、排序算法

【1】冒泡排序

冒泡排序(Bubble Sort)是一种简单的排序算法,也是最基础、最容易理解的一种排序算法。它会遍历要排序的数组,依次比较相邻两个元素的大小,如果前一个元素比后一个元素大,就交换这两个元素的位置。

冒泡排序的过程如下:

  1. 从数组的第一个元素开始,依次比较相邻的两个元素,如果前一个元素比后一个元素大,则交换这两个元素的位置。
  2. 继续比较相邻的元素,直到数组的最后一个元素。
  3. 重复执行步骤1和步骤2,直到整个数组都按照从小到大的顺序排列好。

冒泡排序的时间复杂度是O(N^2),其中N是数组中元素的数量。在实际应用中,由于其时间复杂度较高,冒泡排序很少被用于大规模数据的

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

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

相关文章

博客系统的后端设计(八) - 实现发布博客功能

文章目录 发布博客1. 约定前后端交互接口2. 服务器代码3. 客户端代码4. 出现的问题 发布博客 在原来的编辑页面点击发布文章按钮,是不会有什么效果的。 这是因为此时还不能实现前后端的交互。 1. 约定前后端交互接口 请求使用 POST,路径是 /blog title这…

MVVM封装

MVVM封装 一.MVVM1.依赖2.mvvm封装3.业务层调用1.MainService2.MainRepository3.MainViewModel4.TestActivity 4.独立运行main业务模块 一.MVVM 1.依赖 config.gradle //jetpackdef lifecycle_version "2.5.1"libLivedata "androidx.lifecycle:lifecycle-li…

谁懂啊!性能测试还能这么快学好。。。。。。

目录 前言 (一)用户视角看响应时间: (二)运维视角看系统的使用率 mysql等数据库关注指标 JVM(针对java技术线):Java应用程序的CPU和内存使用率 系统最大处理的任务数: &#…

如何完善企业性能测试流程?详解测试计划编写与实现

目录 前言: 性能测试流程 性能测试计划 实例代码 总结 前言: 在现代技术领域中,性能测试是非常重要的一个流程。无论是应用程序、网站、数据库等,都需要经过严格的性能测试,以确保其能够在各种条件下保持稳定的性…

RabbitMq指南:彻底解决消息可靠性问题以及实现延迟队列

提到 RabbitMq,想必大家都不陌生,我们经常使用它来进行服务之间的异步通信,如短信,日志,邮件发送等业务场景都可以使用 RabbitMq 实现,但在使用的过程中我们会遇到消息丢失的问题,也会有延迟消费…

SSM(Spring篇)

Spring Spring的IOC和DI Spring简介 介绍 Spring的分层Java SE\EE应用full-stack轻量级开源框架,以IOC(Inverse Of Control:反转控制)和AOP(Aspect Oriented Programing:面向切面编程)为内核…

AOP参数校验

场景 在面试中,可能会问道AOP的适用场景有哪些,参数校验就是其中的一个例子 在Java使用登录or注册功能时,会需要用户提交邮箱手机号等信息,此时前端可能会做参数校验,以下代码是基于后端的参数校验,可适用…

不推荐你做网工,就因为这一个字

大家好,我是许公子。 我平时闲暇的时候,很喜欢在网上逛逛,看看大家最近都在聊什么。 这几天看到个问题。 网络工程师,累吗? 里面有不少回答觉得,网工这行,太累了。 “ 做实施的时候&#xf…

【学习记录22】git删除远程主分支和文件

项目分支太多,代码冗余太多,项目也没正式启用,想着全部清空重新来一遍,参考了网上的步骤都不太理想,全部走不通,搜出来大部分都是类似下面的操作。经过一段时间折腾终于删掉并清空。因此记录一下以备后期查…

小白入门SRC漏洞挖掘的正确姿势

前言 有不少阅读过我文章的伙伴都知道,我从事网络安全行业已经好几年,积累了丰富的经验和技能。在这段时间里,我参与了多个实际项目的规划和实施,成功防范了各种网络攻击和漏洞利用,提高了安全防护水平。 也有很多小…

Azure Services -5.25-summary

文章目录 1. Resources2.Data processing process3.Virtual network and public ip address4. Kubernetes services5. Yaml file first , we enter the homepage of microsoft azure, and we can see a lot of servicse provided by the microsoft azure , 1. Resources accou…

SSM(SpringMVC篇)

SpringMVC SpringMVC简介 概述 SpringMVC是一种基于java的实现MVC设计模型的请求驱动类型的轻量级web框架,属于SpringFrameWork的后续产品,已经融合在Spring Web Flow中 SpringMVC已经成为目前最主流的框架之一,并且随着Spring3.0的发布&…

Excel高手与普通人之间的差距,全在这个比Access还简单的工具

用“Excel”还是用“Python”? 很多职场人,在工作的大部分时间都会和“Excel”打交道,普通人,我们用“Excel”的录入和统计等,很多功能是不会用的。 只有一部分人群,会“Excel”的高级操作,比…

毫米波雷达模块在自动驾驶系统中的关键功能

随着自动驾驶技术的快速发展,毫米波雷达模块作为一项关键技术,为自动驾驶系统提供了重要的感知和决策能力。毫米波雷达模块通过实时探测和跟踪周围环境中的车辆、行人和障碍物,提供精确的距离和速度信息,帮助自动驾驶车辆做出准确…

【干货】IPV6 知识点与OSPFv3 原理与配置

今天和海翎光电的小编咱们一起聊聊IPv6的报头。下图是IPV4和IPV6的对比图,个人感觉还是比较直观的,我们就以这张图来梳理IPv6的报头内容。 一、IPv4的报头内容 首先,我们先重新回顾一下IPv4的报头内容,对于这个内容比较熟悉的朋友…

第十二章 异常(Exception)

一、异常的概念(P444) Java 语言中,将程序执行中发生的不正常情况称为“异常”。(开发过程中的语法错误和逻辑错误不是异常) 执行过程中所发生的异常事件可分为两大类: (1)Error&…

Three.js--》实现3d圣诞贺卡展示模型

目录 项目搭建 初始化three.js基础代码 加载环境模型 设置环境纹理 添加水面并设置阴影效果 实现幽灵小球的运动 实现相机切换和文字切屏 实现漫天星星和爱心样式 今天简单实现一个three.js的小Demo,加强自己对three知识的掌握与学习,只有在项目…

QT 一个project调用另外一个project

1.随便建两个project, test888 (test888 里面随便写一个类如CHPerson), test999 2.把test888放在test999目录下 3.在test888里面手动创建一个test888.pri文件,里面内容如下: INCLUDEPATH $$PWDHEADERS \$$PWD/CHPerson.h \SOURCES \$$PWD/CHPerson.cpp \4.在tes…

集权设施攻防兵法:实战攻防之Exchange篇

一、黑客视角下的Exchange Microsoft Exchange Server是由微软开发的企业级邮件和协作平台。它提供了强大的电子邮件、日历、联系人和任务管理功能,使组织能够高效地进行沟通和协作。然而,它也时常受到攻击。 攻击者喜欢攻击Exchange服务器有两个重要原…

基于遗传算法的LQR控制器优化设计(matlab实现)

以下内容大部分来源于《MATLAB智能算法30个案例分析》,仅为学习交流所用。 5.1 理论基础 5.1.1 LQR控制 假设线性时不变系统的状态方程模型为 可以引入最优控制的性能指标,即设计一个输入量u,使得 为最小。其中,Q和R分别为状态变量和输…