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

递推算法计算信号特征

在线算法(在线计算或递推计算)能够在不存储全部数据的情况下逐步更新信号的特征信息,非常适合资源受限的单片机应用场景。
用途:单片机边采集ADC边计算,最终将采集的信号特征计算结果。平台通过长期监控信号特征来确定采集的设备工作正常。用途机台长期监控。

以下是几种常见的信号特征信息计算及其对应的在线算法:

1. 均值(Mean)

递推均值公式
mean n = ( n − 1 ) ⋅ mean n − 1 + x n n \text{mean}_n = \frac{(n-1) \cdot \text{mean}_{n-1} + x_n}{n} meann=n(n1)meann1+xn
其中,( n ) 是当前采样点的数量,( x_n ) 是第 ( n ) 个采样值,( \text{mean}_{n-1} ) 是前 ( n-1 ) 个采样值的均值。

2. 均方根(RMS, Root Mean Square)

递推 RMS 公式:
RMS n = ( n − 1 ) ⋅ ( RMS n − 1 ) 2 + x n 2 n \text{RMS}_n = \sqrt{\frac{(n-1) \cdot (\text{RMS}_{n-1})^2 + x_n^2}{n}} RMSn=n(n1)(RMSn1)2+xn2

3. 方差(Variance)

递推方差公式:
var n = ( n − 1 ) ⋅ var n − 1 + ( x n − mean n ) ( x n − mean n − 1 ) n \text{var}_n = \frac{(n-1) \cdot \text{var}_{n-1} + (x_n - \text{mean}_n)(x_n - \text{mean}_{n-1})}{n} varn=n(n1)varn1+(xnmeann)(xnmeann1)

4. 标准差(Standard Deviation)

标准差是方差的平方根:
stddev n = var n \text{stddev}_n = \sqrt{\text{var}_n} stddevn=varn

5. 峰峰值(Peak-to-Peak Value)

更新最大值和最小值:

if (x_n > max) max = x_n;
if (x_n < min) min = x_n;

峰峰值计算公式:
peak-to-peak = max − min \text{peak-to-peak} = \text{max} - \text{min} peak-to-peak=maxmin

6. 平均绝对偏差(Mean Absolute Deviation, MAD)

递推平均绝对偏差公式:
MAD n = ( n − 1 ) ⋅ MAD n − 1 + ∣ x n − mean n ∣ n \text{MAD}_n = \frac{(n-1) \cdot \text{MAD}_{n-1} + |x_n - \text{mean}_n|}{n} MADn=n(n1)MADn1+xnmeann

7. 信号功率(Power)

递推信号功率公式:
power n = ( n − 1 ) ⋅ power n − 1 + x n 2 n \text{power}_n = \frac{(n-1) \cdot \text{power}_{n-1} + x_n^2}{n} powern=n(n1)powern1+xn2

8. 信号能量(Energy)

信号能量是所有样本平方的累加和:
energy n = energy n − 1 + x n 2 \text{energy}_n = \text{energy}_{n-1} + x_n^2 energyn=energyn1+xn2

示例代码更新

以下是使用递推算法计算上述信号特征信息的示例代码:

#include "stm32f0xx_hal.h"
#include <math.h>// 全局变量
volatile uint32_t count = 0;
volatile float mean = 0;
volatile float variance = 0;
volatile float stddev = 0;
volatile float max = -FLT_MAX;
volatile float min = FLT_MAX;
volatile float mad = 0;
volatile float power = 0;
volatile float energy = 0;
volatile uint8_t trigger_active = 0;// ADC 和定时器句柄
ADC_HandleTypeDef hadc;
TIM_HandleTypeDef htim;// 初始化 ADC
void ADC_Init(void) {__HAL_RCC_ADC1_CLK_ENABLE();hadc.Instance = ADC1;hadc.Init.Resolution = ADC_RESOLUTION_12B;hadc.Init.ScanConvMode = DISABLE;hadc.Init.ContinuousConvMode = DISABLE;hadc.Init.DiscontinuousConvMode = DISABLE;hadc.Init.ExternalTrigConv = ADC_EXTERNALTRIGCONV_T1_TRGO;hadc.Init.DataAlign = ADC_DATAALIGN_RIGHT;hadc.Init.NbrOfConversion = 1;HAL_ADC_Init(&hadc);// 配置 ADC 通道ADC_ChannelConfTypeDef sConfig = {0};sConfig.Channel = ADC_CHANNEL_0;sConfig.Rank = ADC_RANK_CHANNEL_NUMBER;HAL_ADC_ConfigChannel(&hadc, &sConfig);
}// 初始化定时器
void TIM_Init(void) {__HAL_RCC_TIM1_CLK_ENABLE();htim.Instance = TIM1;htim.Init.Prescaler = 8000 - 1;  // 1 MHz 时钟,1 kHz 采样率htim.Init.CounterMode = TIM_COUNTERMODE_UP;htim.Init.Period = 1000 - 1;     // 1 kHzhtim.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;HAL_TIM_Base_Init(&htim);// 配置定时器触发 ADCTIM_MasterConfigTypeDef sMasterConfig = {0};sMasterConfig.MasterOutputTrigger = TIM_TRGO_UPDATE;sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;HAL_TIMEx_MasterConfigSynchronization(&htim, &sMasterConfig);
}// ADC 转换完成中断服务函数
void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc) {if (trigger_active) {uint32_t adc_value = HAL_ADC_GetValue(hadc);float x_n = (float)adc_value;// 更新样本计数count++;// 计算均值float old_mean = mean;mean = ((count - 1) * mean + x_n) / count;// 计算方差variance = ((count - 1) * variance + (x_n - mean) * (x_n - old_mean)) / count;stddev = sqrt(variance);// 更新最大值和最小值if (x_n > max) max = x_n;if (x_n < min) min = x_n;// 计算平均绝对偏差mad = ((count - 1) * mad + fabs(x_n - mean)) / count;// 计算信号功率power = ((count - 1) * power + x_n * x_n) / count;// 计算信号能量energy += x_n * x_n;}
}// 触发信号检测函数
void check_trigger_signal(void) {if (/* 检测到触发信号 */) {trigger_active = 1;HAL_ADC_Start_IT(&hadc);HAL_TIM_Base_Start(&htim);} else {trigger_active = 0;HAL_ADC_Stop_IT(&hadc);HAL_TIM_Base_Stop(&htim);}
}// 主函数
int main(void) {HAL_Init();ADC_Init();TIM_Init();while (1) {check_trigger_signal();// 其他处理}
}

在这个示例代码中,我们展示了如何使用递推算法来计算多个信号特征信息,包括均值、方差、标准差、最大值、最小值、平均绝对偏差、信号功率和能量。这些算法在每次新的采样点到达时更新,无需存储所有数据,适用于单片机环境。

相关文章:

递推算法计算信号特征

在线算法&#xff08;在线计算或递推计算&#xff09;能够在不存储全部数据的情况下逐步更新信号的特征信息&#xff0c;非常适合资源受限的单片机应用场景。 用途&#xff1a;单片机边采集&#xff21;&#xff24;&#xff23;边计算&#xff0c;最终将采集的信号特征计算结果…...

spring-boot-configuration-processor注释处理器

开源项目SDK&#xff1a;https://github.com/mingyang66/spring-parent 个人文档&#xff1a;https://mingyang66.github.io/raccoon-docs/#/ spring-boot-configuration-processor是springboot提供的一个注释处理器&#xff08;annotation processor&#xff09;,它用于在编译…...

Python和MATLAB粘性力接触力动态模型半隐式欧拉算法

&#x1f3af;要点 &#x1f3af;运动力模型计算制作过程&#xff1a;&#x1f58a;相机捕捉网球运动图&#xff0c;制定运动数学模型&#xff0c;数值微分运动方程 | &#x1f58a;计算运动&#xff0c;欧拉算法离散积分运动&#xff0c;欧拉-克罗默算法微分运动方程 &#…...

webstorm无法识别tsconfig.json引用项目配置文件中的路径别名

问题 vite项目模板中&#xff0c;应用的ts配置内容写在tsconfig.app.json文件中&#xff0c;并在tsconfig.json通过项目引用的方式导入 {"files": [],"references": [{"path": "./tsconfig.app.json"},{"path": "./t…...

qiankun微前端:qiankun+vite+vue3+ts(未完待续..)

目录 什么是微前端 目前现有的微前端 好处 使用 子应用的页面在主应用里显示 什么是微前端 微前端是一种多个团队通过独立发布功能的方式来共同构建现代化 web 应用的技术手段及方法策略。 我的理解就是将一个大型的前端应用拆分成多个模块&#xff0c;每个微前端模块可以由…...

001:开源交易系统开发实战开篇

本专栏采用融入【主力思维】的方法学&#xff0c;包含数据抓取、特征模型开发、历史验证回归测试、每日动态风险评估管理等技术&#xff0c;较大的增强股票投资胜率&#xff0c;让IT开发者拥有一套属于自己思路的专用交易软件。 先简要介绍系统成功和项目&#xff0c;后续持续…...

Pytorch实战(一):LeNet神经网络

文章目录 一、模型实现1.1数据集的下载1.2加载数据集1.3模型训练1.4模型预测 LeNet神经网络是第一个卷积神经网络&#xff08;CNN&#xff09;&#xff0c;首次采用了卷积层、池化层这两个全新的神经网络组件&#xff0c;接收灰度图像&#xff0c;并输出其中包含的手写数字&…...

RabbitMq的基础及springAmqp的使用

RabbitMq 官网:RabbitMQ: One broker to queue them all | RabbitMQ 什么是MQ&#xff1f; mq就是消息队列&#xff0c;消息队列遵循这先入先出原则。一般用来解决应用解耦&#xff0c;异步消息&#xff0c;流量削峰等问题&#xff0c;实现高性能&#xff0c;高可用&#xf…...

uniapp uniCloud云开发

uniCloud概述 uniCloud 是 DCloud 联合阿里云、腾讯云、支付宝云&#xff0c;为开发者提供的基于 serverless 模式和 js 编程的云开发平台。 uniCloud 的 web控制台地址&#xff1a;https://unicloud.dcloud.net.cn 文档&#xff1a;https://doc.dcloud.net.cn/uniCloud/ un…...

智能扫地机,让生活电器更加便民-NV040D扫地机语音方案

一、语音扫地机开发背景&#xff1a; 随着人工智能和物联网技术的飞速发展&#xff0c;智能家居设备已成为现代家庭不可或缺的一部分。其中&#xff0c;扫地机作为家庭清洁的重要工具&#xff0c;更是得到了广泛的关注和应用。 然而&#xff0c;传统的扫地机在功能和使用上仍存…...

【后端面试题】【中间件】【NoSQL】ElasticSearch索引机制和高性能的面试思路

Elasticsearch的索引机制 Elasticsearch使用的是倒排索引&#xff0c;所谓的倒排索引是相对于正排索引而言的。 在一般的文件系统中&#xff0c;索引是文档映射到关键字&#xff0c;而倒排索引则相反&#xff0c;是从关键字映射到文档。 如果没有倒排索引的话&#xff0c;想找…...

【漏洞复现】时空智友ERP updater.uploadStudioFile接口处存在任意文件上传

0x01 产品简介 时空智友ERP是一款基于云计算和大数据技术的企业资源计划管理系统。该系统旨在帮助企业实现数字化转型&#xff0c;提高运营效率、降低成本、增强决策能力和竞争力&#xff0c;时空智友ERP系统涵盖了企业的各个业务领域&#xff0c;包括财务管理、供应链管理、生…...

[leetcode hot 150]第五百三十题,二叉搜索树的最小绝对差

题目&#xff1a; 给你一个二叉搜索树的根节点 root &#xff0c;返回 树中任意两不同节点值之间的最小差值 。 差值是一个正数&#xff0c;其数值等于两值之差的绝对值。 解析&#xff1a; minDiffInBST 方法是主要方法。创建一个 ArrayList 来存储树的节点值。inorderTrave…...

【Docker】可视化平台Portainer

文章目录 Portainer的特点Portainer的安装步骤注意事项 Docker的可视化工具Portainer是一个轻量级的容器管理平台&#xff0c;它为用户提供了一个直观的图形界面来管理Docker环境。以下是关于Portainer的详细介绍和安装步骤&#xff1a; Portainer的特点 轻量级&#xff1a;P…...

MySQL高级-MVCC-原理分析(RR级别)

文章目录 1、RR隔离级别下&#xff0c;仅在事务中第一次执行快照读时生成ReadView&#xff0c;后续复用该ReadView2、总结 1、RR隔离级别下&#xff0c;仅在事务中第一次执行快照读时生成ReadView&#xff0c;后续复用该ReadView 而RR 是可重复读&#xff0c;在一个事务中&…...

压力测试Monkey命令参数和报告分析

目录 常用参数 -p <测试的包名列表> -v 显示日志详细程度 -s 伪随机数生成器的种子值 --throttle < 毫秒> --ignore-crashes 忽略崩溃 --ignore-timeouts 忽略超时 --monitor-native-crashes 监视本地崩溃代码 --ignore-security-exceptions 忽略安全异常 …...

C# Benchmark

创建控制台项目&#xff08;或修改现有项目的Main方法代码&#xff09;&#xff0c;Nget导入Benchmark0.13.12&#xff0c;创建测试类&#xff1a; public class StringBenchMark{int[] numbers;public StringBenchMark() {numbers Enumerable.Range(1, 20000).ToArray();}[Be…...

算法金 | 协方差、方差、标准差、协方差矩阵

大侠幸会&#xff0c;在下全网同名「算法金」 0 基础转 AI 上岸&#xff0c;多个算法赛 Top 「日更万日&#xff0c;让更多人享受智能乐趣」 抱个拳&#xff0c;送个礼 1. 方差 方差是统计学中用来度量一组数据分散程度的重要指标。它反映了数据点与其均值之间的偏离程度。在…...

FastAPI教程II

本文参考FastAPI教程https://fastapi.tiangolo.com/zh/tutorial Cookie参数 定义Cookie参数与定义Query和Path参数一样。 具体步骤如下&#xff1a; 导入Cookie&#xff1a;from fastapi import Cookie声明Cookie参数&#xff0c;声明Cookie参数的方式与声明Query和Path参数…...

Facebook的投流技巧有哪些?

相信大家都知道Facebook拥有着巨大的用户群体和高转化率&#xff0c;在国外社交推广中的影响不言而喻。但随着Facebook广告的竞争越来越激烈&#xff0c;在Facebook广告上获得高投资回报率也变得越来越困难。IPIDEA代理IP今天就教大家如何在Facebook上投放广告的技巧&#xff0…...

【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15

缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下&#xff1a; struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...

synchronized 学习

学习源&#xff1a; https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖&#xff0c;也要考虑性能问题&#xff08;场景&#xff09; 2.常见面试问题&#xff1a; sync出…...

docker详细操作--未完待续

docker介绍 docker官网: Docker&#xff1a;加速容器应用程序开发 harbor官网&#xff1a;Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台&#xff0c;用于将应用程序及其依赖项&#xff08;如库、运行时环…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)

文章目录 1.什么是Redis&#xff1f;2.为什么要使用redis作为mysql的缓存&#xff1f;3.什么是缓存雪崩、缓存穿透、缓存击穿&#xff1f;3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件

今天呢&#xff0c;博主的学习进度也是步入了Java Mybatis 框架&#xff0c;目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学&#xff0c;希望能对大家有所帮助&#xff0c;也特别欢迎大家指点不足之处&#xff0c;小生很乐意接受正确的建议&…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)

服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

React Native在HarmonyOS 5.0阅读类应用开发中的实践

一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强&#xff0c;React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 &#xff08;1&#xff09;使用React Native…...

【git】把本地更改提交远程新分支feature_g

创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...

什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南

文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/55aefaea8a9f477e86d065227851fe3d.pn…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...