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

news/2024/10/30 9:25:30/

一、前言

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

image-20230525140855726

image-20230525140932125

二、排序算法

【1】冒泡排序

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

冒泡排序的过程如下:

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

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


http://www.ppmy.cn/news/83144.html

相关文章

OpenCV:CMake 产生 VS2019 项目和解决方案

CMake 是一个跨平台的自动化编译程序,它用于管理代码的构建过程。使用 CMake 可以简化跨平台项目的构建和移植,提供简单而强大的语法来描述构建过程,并生成多种不同的构建系统,如 GNU Make、Ninja 和 Visual Studio。因为 CMake 具…

Spring MVC文件上传处理详解

Spring MVC文件上传处理详解 Spring MVC是Java Web开发中非常常用的框架之一,它提供了许多方便的功能。其中,文件上传是Web开发中常用的功能之一,本文将介绍如何使用Spring MVC处理文件上传以及相关代码实现。 文件上传的基本原理 在Web开发…

ISO21434 概述

目录 一、ISO21434 1.1 目的 1.2 ISO21434文档组织结构 二、适用范围 三、引用标准 四、术语和缩写 4.1 术语 4.2 缩写 五、一般考虑 一、ISO21434 1.1 目的 本文件阐述了道路车辆内电气和电子(E/E)系统工程中的网络安全问题。通过确保对网络安…

Logback日志详细教程

一、Logback日志 1、什么是日志 通过日志查看程序的运行过程,运行信息,异常信息等 2、日志级别 日志记录器(Logger)的行为是分等级的。如下表所示: 分为:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF…

java设计模式之享元设计模式的前世今生

享元设计模式是什么? 享元设计模式是一种结构型设计模式,它的目的是在大规模重复使用相似对象时提高内存利用率和性能。它通过共享对象的公共部分来减少所需要的内存,从而在系统中同时存在更多的对象。 享元设计模式通过将对象分为可共享的内…

C++STL算法篇之集合算法

CSTL算法篇之集合算法 集合算法set_union(并集)set_difference(差集)set_intersection(交集)set_symmetric_difference(对称差集) 集合算法 当然最好还是要包含 functional algorithm 这2个头文件 集合算法有4个函数 1.set_union 交集 2.set_difference 差集 3.set_intersectio…

容器云中弹性伸缩的实现策略

容器云是一种基于云计算技术的平台,可以快速构建、部署和管理应用程序。弹性伸缩是容器云中的一个重要特性,它允许容器云平台根据应用程序的需求自动调整计算资源的大小,以保证应用程序的性能和可靠性。 弹性伸缩的基本原理是根据应用程序的负…

记一次符合Google Coding Style的Bash脚本重构

最近我在思考这样一个问题,顺便看一下gpt对这个问题的解释。搜索发现: 团队写代码,为什么要遵循coding guideline? 一致性:编码准则确保整个团队的代码风格和格式是一致的,这使得团队成员之间更易于交流和…