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

信号处理——自相关和互相关分析

1.概括

在信号处理中,自相关互相关是相关分析非常重要的概念,它们能分析一个信号或两个信号在时间维度的相似性,在振动测试分析、雷达测距和声发射探伤得到了广泛的应用。自相关分析的研究对象为一个信号互相关分析的研究对象为两个信号

本文以互相关分析为例,流程如下图所示,构建了一个余弦信号,并人为设置滞后延迟20个采样点(准确来说是采样间隔),构建了另一个余弦信号,通过计算了两个余弦信号的互相关函数,分析了两个信号的相似性,找到了两个信号之间的时间延迟,在工程实际中常用于进行故障源定位。此外,对比matlab的互相关函数xcorr,本文也采用手动计算的方法,计算了互相关函数,验证了本文手工计算方法的准确性。

关于自相关、互相关以及相关系数的更多公式定义和讲解,请参考链接:

相关系数、自相关、互相关等概念理解:https://zhuanlan.zhihu.com/p/613949451

该内容参考了一些资料:

1、书籍:机械工程测试技术基础 第3版 熊诗波编著

2、相关系数、自相关、互相关等概念理解:https://zhuanlan.zhihu.com/p/613949451

3、matlab官网的函数解释:

https://ww2.mathworks.cn/help/matlab/ref/xcorr.html?searchHighlight=xcorr&s_tid=srchtitle_support_results_1_xcorr

代码采用了Matlab 2024a进行运行,欢迎大家测试和提出问题!

2.具体案例

互相关分析是分析信号间时间前后相似的重要手段,它在故障源定位中得到了广泛的应用。本文分析的仿真信号如下图所示:

这里,y1为原始的余弦信号,y2为延迟了20个采样点(准确来说是采样间隔)的余弦信号,采样频率为100,信号长度为100,即采集时间为1s,获得时域波形如下图所示:

从上图中,能明显发现y2相对于y1延迟了差不多0.2s(一个采样间隔是1/100=0.01s,20个 就是0.20s)。采用matlab的互相关计算函数xcorr函数,获得互相关函数如下图所示:

上图为一个相关函数的茎叶图,用的stem函数。从上图中能发现,存在正相关和负相关的最大点,表明了不同延迟或超前时两个信号的相关性最强。关于具体意义稍后讨论哈!下图为手动计算互相关函数和matlab的xcorr函数的结果对比图:

从上图中能定性地发现,手动计算结果基本和matlab的结果保持一致。同时,定量计算的平均偏差(平均偏差为两数差的绝对值的平均数)结果如下,二者的偏差为0。

综上分析,手动计算的互相关函数是正确的!关于互相关函数的计算方式,请参考链接:相关系数、自相关、互相关等概念理解:https://zhuanlan.zhihu.com/p/613949451。这里就不给大家展开了。

紧接互相关函数结果进行分析。如下图所示

以最大正相关的点为例,发现互相关函数最大的峰值点(-20,20.1535),20表示使两个信号之间的相关程度最大的时间间隔是20,负号表示超前还是滞后,我用的matlab的xcorr函数,代码具体为[c,lags] = xcorr(y1,y2),c为互相关函数的y轴,lags为互相关函数的x轴。因此可以断定,-20的意思为y2比y1滞后20个采样间隔。相反,如果是正号的意思就是超前,大家可以自行验证,欢迎大家指出错误哈!此外,通过分析手动计算互相关函数过程也能发现,负号的意思为滞后。代码后续增加了一个if判断函数,来自动分析互相关函数结果,结果如上上图所示。

综上分析,互相关函数分析结果与信号人为设置结果相一致,验证了本案例的正确性!

3.具体代码

代码主要有一个:

1、main.m(主函数,用于互相关函数分析)

2、matlab中计算互相关函数为xcorr,更多使用细节参考https://ww2.mathworks.cn/help/matlab/ref/xcorr.html?searchHighlight=xcorr&s_tid=srchtitle_support_results_1_xcorr

%% 信号的自相关和互相关分析
%% 作者:冷漠
%% 时间:2024年7月29日
%% 关注公众号 :"故障诊断与寿命预测工具箱",每天进步一点点
clc
clear all
close all
%%
​
fs=100;                                             %采样频率
L=100;                                              %信号长度
t=(0:L-1)/fs;                                          %时间序列
y1=0.7*cos(2*pi*2*t-pi/4);    %信号y1
y2=circshift(y1,20);
y2(1:20)=0;
​
%画图
figure;
subplot(211);plot(t,y1,'b-');xlabel('时间(s)');ylabel('幅值');
legend('y1');
subplot(212);plot(t,y2,'b-');xlabel('时间(s)');ylabel('幅值');hold on;
plot(t(21),y2(21),'Color','r','Marker','pentagram');
legend('y2','y1的起始点')
​
%计算互相关
[c,lags] = xcorr(y1,y2);
figure;
stem(lags,c)
​
%手动计算互相关
y11=zeros(3*length(y1)-2,1);
y22=zeros(3*length(y2)-2,1);
y11(length(y1):2*length(y1)-1)=y1;
y22(1:length(y2))=y2;
​
for i=1:2*length(y1)-1c1(i)=sum(y11.*y22);y22=circshift(y22,1);
end
​
%matlab函数和手动计算函数之间对比分析
figure;
plot(lags,c,'b-*');hold on;
plot(lags,c1,'o');
legend('matlab的xcorr函数','手动计算')
​
fprintf('matlab的xcorr函数获得相关函数与手动计算之间的差为%f \n',sum(abs(c1-c))/length(c1));
​
%分析结果
[c_max,index]=max(c);
%相关函数
figure;plot(lags,c,'b-');hold on;
plot(lags(index),c_max,'Color','r','Marker','pentagram','MarkerSize',10);
legend('相关函数','最大正相关的延迟位置')
​
%信号的对应关系
figure;
subplot(211);plot(t,y1,'b-');xlabel('时间(s)');ylabel('幅值');
legend('y1');
subplot(212);plot(t,y2,'b-');xlabel('时间(s)');ylabel('幅值');hold on;
plot(t(abs(lags(index))+1),y2(abs(lags(index))+1),'Color','r','Marker','pentagram');
legend('y2','y1的起始点')
​
%输出分析结果
if lags(index)<0fprintf('y2比y1滞后%d 个采样点 \n',abs(lags(index)));
elsefprintf('y2比y1超前%d 个采样点 \n',abs(lags(index)));
end
​
​

4.细节说明

1.xcorr是matlab的自相关和互相关的函数,挺方便的,推荐大家使用,自相关函数只有一个输入,请大家参考官方使用介绍。互相关分析代码为:[c,lags] = xcorr(y1,y2),c为互相关函数的y轴,lags为互相关函数的x轴,c的结果中,如果最大峰值的横坐标(即lags(max(c)))为-20,则表示y2比y1滞后了20个采样间隔(y1比y2超前了20个采样间隔),如果为20,则表示y2比y1超前了20个采样间隔(y1比y2滞后了20个采样间隔)。

2.关于互相关函数、自相关函数的具体公式定义和计算方法可以参考如下链接:

相关系数、自相关、互相关等概念理解:https://zhuanlan.zhihu.com/p/613949451

5.总结

上述案例是采用互相关函数,分析两个信号间的相关程度。通过人为设置第二个信号相对于第一个信号的延迟,利用互相关函数,确定潜在的延迟数,对比人为设置参考,验证了互相关函数分析信号间相关程度的可行性,其原理常用于故障源定位。

此外,为了更好地理解互相关函数的计算原理,手动计算复现了互相关函数,对比matlab的自带函数,验证了手动计算的可行性。

6.相关资料

附件

20wq

1、上述源码

     ①代码:

      main.m(主函数);

2、相关参考

①书籍:机械工程测试技术基础 第3版 熊诗波编著

②相关系数、自相关、互相关等概念理解:https://zhuanlan.zhihu.com/p/613949451

③matlab官网的函数解释:

https://ww2.mathworks.cn/help/matlab/ref/xcorr.html?searchHighlight=xcorr&s_tid=srchtitle_support_results_1_xcorr

更多内容,请关注公众号“故障诊断与寿命预测工具箱”,每天进步一点点。

相关文章:

信号处理——自相关和互相关分析

1.概括 在信号处理中&#xff0c;自相关和互相关是相关分析非常重要的概念&#xff0c;它们能分析一个信号或两个信号在时间维度的相似性&#xff0c;在振动测试分析、雷达测距和声发射探伤得到了广泛的应用。自相关分析的研究对象为一个信号&#xff0c;互相关分析的研究对象…...

如何解决部分设备分辨率不适配

1&#xff09;如何解决部分设备分辨率不适配 2&#xff09;Unity中如何实现草的LOD 3&#xff09;使用了Play Asset Delivery提交版本被Google报错 4&#xff09;如何计算弧线弹道的落地位置 这是第396篇UWA技术知识分享的推送&#xff0c;精选了UWA社区的热门话题&#xff0c;…...

C#插件 调用存储过程(输出参数类型)

存储过程 CREATE PROCEDURE [dbo].[GetSum]num1 INT,num2 INT,result INT OUTPUT AS BEGINselect result num1 num2 END C#代码 using Kingdee.BOS; using Kingdee.BOS.App.Data; using Kingdee.BOS.Core.Bill.PlugIn; using Kingdee.BOS.Util; using System; using System.…...

代码随想录算法训练营day32 | 509. 斐波那契数 、70. 爬楼梯 、746. 使用最小花费爬楼梯

碎碎念&#xff1a;开始动态规划了&#xff01;加油&#xff01; 参考&#xff1a;代码随想录 动态规划理论基础 动态规划常见类型&#xff1a; 动规基础类题目背包问题打家劫舍股票问题子序列问题 解决动态规划问题应该要思考清楚的&#xff1a; 动态规划五部曲&#xff1…...

【人工智能专栏】Learning Rate Decay 学习率衰减

Learning Rate Decay 学习率衰减 使用格式 optimizer = torch.optim.SGD(model.paraters(), lr=0.1, momentum=0.9, weight_decay=1e-4) scheduler = torch.optim...

浙大版《C语言程序设计(第3版)》题目集

练习4-11 统计素数并求和 本题要求统计给定整数M和N区间内素数的个数并对它们求和。 输入格式: 输入在一行中给出两个正整数M和N&#xff08;1≤M≤N≤500&#xff09;。 输出格式: 在一行中顺序输出M和N区间内素数的个数以及它们的和&#xff0c;数字间以空格分隔。 输入…...

【学习笔记】Day 2

一、进度概述 1、inversionnet_train_light 试运行——未成功 2、DL-FWI基础入门培训-1,2&#xff0c;以及作业1的完成——暂未完成作业 二、详情 1、inversionnet_train_light 试运行 在补充完相关依赖后&#xff0c;运行仍有报错 产生原因&#xff1a;这个代码在当…...

Java中的Map(如果想知道Java中有关Map的知识点,那么只看这一篇就足够了!)

前言&#xff1a;在Java编程语言中&#xff0c;集合框架&#xff08;Collection Framework&#xff09;提供了一系列用于存储和操作数据的接口和类。其中&#xff0c;Map和Set是两个非常重要的接口&#xff0c;分别用于存储键值对和无重复元素的集合。 ✨✨✨这里是秋刀鱼不做梦…...

裸金属服务器详解

在云计算飞速发展的今天&#xff0c;裸金属服务器&#xff08;Bare Metal Server, BMS&#xff09;作为一种兼具传统物理服务器性能和虚拟化服务优势的计算资源&#xff0c;正逐渐成为企业和个人用户的重要选择。今天我们就来了解下关于裸金属服务器的定义、核心特点以及其在各…...

等待唤醒机制两种实现方法-阻塞队列

桌子上有面条-》吃货执行 桌子上没面条-》生产者制造执行 1、消费者等待 消费者先抢到CPU执行权&#xff0c;发现桌子上没有面条&#xff0c;于是变成等待wait状态&#xff0c;并释放CPU执行权&#xff0c;此时的CPU肯定会被厨师抢到&#xff0c;初始开始做面条&#xff0c;…...

数组项相加和 – 如何将 JavaScript 数组中的数字相加

JavaScript 中的数组是一个对象&#xff0c;它允许您在单个变量名称下存储多个值的有序集合&#xff0c;并以多种方式操作这些值。 在本文中&#xff0c;您将学习如何使用几种不同的方法计算给定数组中所有数字的总和。 具体来说&#xff0c;使用以下方法得到数组中所有数字的总…...

C#和S7-1200PLC S7.NET通信

1、一步步建立一个C#项目 一步步建立一个C#项目(连续读取S7-1200PLC数据)_s7协议批量读取-CSDN博客文章浏览阅读1.7k次,点赞2次,收藏4次。这篇博客作为C#的基础系列,和大家分享如何一步步建立一个C#项目完成对S7-1200PLC数据的连续读取。首先创建一个窗体应用。_s7协议批量…...

常用命令git branch

Git Branch 命令总结 列出分支 git branch&#xff1a;显示本地分支&#xff0c;当前分支会被标记。git branch -r&#xff1a;显示远程分支。git branch -a&#xff1a;显示所有本地和远程分支。 创建分支 git branch <branch_name>&#xff1a;创建一个新分支但不自…...

Android 制作系统签名

一、切换目录 cd build/target/product/security二、执行命令 1)将使用.pk8生成platform.priv.pem (.pem即可,文件名可随意修改)openssl pkcs8 -in platform.pk8 -inform DER -outform PEM -out platform.pem -nocrypt2)生成.p12,此时需输入两次密码,并且要记住 -name后所设置…...

C语言第13篇

1.下面程序是计算n个数的平均值,请填空.______ #include<stdio.h> void main( ) { int i,n; float x,avg0.0; scanf("%d",&n); for(i0;i<n;i) { scanf("%f",&x); avgavg______; } avg________; printf("avg%f\n",avg); } A) …...

基于FPGA的数字信号处理(22)--进位保存加法器(Carry Save Adder, CSA)

目录 1、拆解多个数的加法 2、进位保存加法器 3、CSA的优点和缺点 4、CSA电路的实现 文章总目录点这里&#xff1a;《基于FPGA的数字信号处理》专栏的导航与说明 1、拆解多个数的加法 考虑3个4bits数相加&#xff0c;10 4 7 21 的过程是这样的&#xff1a; 其中的红色数…...

idea使用free流程,2024idea、2023idea都可以安装免费使用

1.先到官网下载&#xff0c;这里选择win系统的&#xff0c;点击下图的.exe https://www.jetbrains.com/idea/download/?sectionwindows 2.下载好后基本上就是一直点击“下一步”到直到安装好&#xff0c;安装好后先打开软件后关闭退出 3.下载配配套资料 链接: https://pan.ba…...

设计模式 之 —— 抽象工厂模式

目录 什么是抽象工厂模式&#xff1f; 定义 特点 抽象工厂模式&#xff08;java代码示例&#xff09; 首先定义第一个接口 实现第一个接口的类 定义第二个接口 实现第二个接口的类 * 创建抽象工厂类 创建扩展了 AbstractFactory 的工厂类 饮料工厂 食物工厂 * 创建一个…...

计量经济学(十六)--一文读懂和学会医学统计学中的四种检验方法

1. 统计学是什么? 统计学是应用数学的一个分支,主要通过利用概率论建立数学模型,收集所观察系统的数据,进行量化的分析、总结,并进而进行推断和预测,为相关决策提供依据和参考。它被广泛的应用在各门学科之上,从物理和社会科学到人文科学,甚至被用来工商业及政府的情报…...

解析 C# Dictionary 代码

entries用于存储当前每个节点的数据&#xff0c;其中四个字段分别表示&#xff1a; hashCode&#xff1a;key对应的hash值next&#xff1a;处理hash冲突&#xff0c;可以理解为是一个链表结构&#xff0c;邻接表key&#xff1a;存储的keyvalue&#xff1a;存储的value bucket…...

如何利用人工智能提升工作效率

在当今这个信息爆炸的时代&#xff0c;我们每天都被大量的工作任务所困扰。然而&#xff0c;随着人工智能技术的不断发展&#xff0c;我们可以通过一些智能工具来提升我们的工作效率。在这篇文章中&#xff0c;我将分享一些关于如何利用人工智能提升工作效率的建议。 首先&…...

Linux驱动开发—Linux内核定时器概念和使用详解,实现基于定时器的字符驱动

文章目录 内核定时器概念在Linux驱动模块中使用定时器软定时器&#xff08;Soft Timers&#xff09;jiffies 含义高精度定时器&#xff08;High Resolution Timers&#xff09; 实现倒计时字符设备驱动 内核定时器概念 在 Linux 内核中&#xff0c;定时器是用来管理和调度延迟…...

mysql数据库:数据库,表和列的基本概念

mysql&#xff1a;数据库&#xff0c;表和列的基本概念以及导入和导出文件 数据库的概念和用途 数据库是一个有组织的数据集合&#xff0c;它们被存储在计算机上以便于管理和访问。数据库的主要目的是为了存储和管理数据&#xff0c;同时使数据能够被高效地访问、检索和更新。数…...

Nextjs 使用 graphql,并且接入多个节点

写在前面 随着区块链技术的流行&#xff0c;也促进了 subgraph 工具的兴起。那么如何在前端接入 graphql 节点就成了关键&#xff0c;其接入方式既存在与 restful 接口相类似的方式&#xff0c;也有其独特接入风格。本文将介绍如何接入 graphql 以及如何应对多个 graphql 节点…...

小结——知识注入

所谓知识注入&#xff0c;其实不该脱离于LLM的基础工作原理&#xff0c;然后空谈抽象概念。 知识&#xff0c;也就是你问他问题&#xff0c;他能输出正确的回答&#xff0c;这只是一个简单的输出token的过程。输出得准了&#xff0c;就是知识&#xff0c;输出不准了&#xff0c…...

科普文:微服务之Spring Cloud Alibaba组件Nacos一致性协议Distro+Raft概叙

一、概要 Nacos是阿里开放的一款中间件&#xff0c;它主要提供三种功能&#xff1a;持久化节点注册&#xff0c;非持久化节点注册和配置管理。 二、一致性协议 - AP/CP Nacos不是纯粹的AP服务&#xff0c;也不是纯粹的CP服务&#xff0c;而是两者同时支持。 这要从服务注册…...

python合并音视频-通过ffmpeg合并音视频

&#x1f308;所属专栏&#xff1a;【python】✨作者主页&#xff1a; Mr.Zwq✔️个人简介&#xff1a;一个正在努力学技术的Python领域创作者&#xff0c;擅长爬虫&#xff0c;逆向&#xff0c;全栈方向&#xff0c;专注基础和实战分享&#xff0c;欢迎咨询&#xff01; 您的…...

Yolov8添加ConvNetV1和V2模块

Yolov8添加ConvNet模块 1 ConvNet系列相关内容 &#xff08;1&#xff09;2022 论文地址&#xff1a;A ConvNet for the 2020s Code Link 如下图所示&#xff0c;精度、效率、尺寸都很不错。 论文的摘要如下&#xff1a; 视觉识别的“咆哮的 20 年代”始于视觉注意力 &…...

​十个常见的 Python 脚本 (详细介绍 + 代码举例)

1. 批量重命名文件 介绍: 该脚本用于批量重命名指定目录下的文件&#xff0c;例如将所有 ".txt" 文件重命名为 ".md" 文件。 import osdef batch_rename(directory, old_ext, new_ext):"""批量重命名文件扩展名。Args:directory: 要处理…...

【C语言】详解feof函数和ferror函数

文章目录 前言1. feof1.1 feof函数原型1.2 正确利用函数特性读写文件1.2.1 针对文本文件1.2.2 针对二进制文件 1.3 feof函数的原理1.4 feof函数实例演示 2. ferror2.1 ferror函数原型 前言 或许我们曾在网络上看过有关于feof函数&#xff0c;都说这个函数是检查文件是否已经读…...

装修广告做哪个网站最好看/百度开放云平台

一个完整的正则使用过程 #调用re模块&#xff1a; In [11]: import re # re.match(pattern, string)第一个参数是你正则的规则, 第二个参数是检测的字符串&#xff1a; In [12]: are.match(r"redhat","redhathello") In [13]: print a.group() redhat #re…...

企业门户网站解决方案/足球比赛统计数据

将地图导出成图片只能在Windows客户端软件进行&#xff0c;手机版、网页版无此功能&#xff1b;并且需要开通VIP才可以执行此操作&#xff0c;导出的图片像素大小和VIP级别有关&#xff0c;详见表1&#xff1a;表1将地图导出成图片的具体操作步骤&#xff1a;1、使用工具栏的图…...

网站建设与维护txt下载/seo网络推广到底是做什么的

最近想学习一下iOS开发&#xff0c;不过一点基础都没有&#xff0c;得先从熟悉object-C语法开始&#xff0c;在此把学习中的一些知识点作为记录。 mac pro常用操作 学习ios【1】Objective-C 基本语法 学习ios【2】Objective-C 数字和字符串 学习iOS【3】数组、词典和集合 本文转…...

武汉网站制作公司选华企加速器/成都网站优化

1. 描述 单元格是组成报表的最小元素&#xff0c;FineReport 将单元格很多属性开放给应用开发人员进行控制&#xff0c;如新增单元格&#xff0c;设置列宽、行高&#xff0c;字体、前景色&#xff0c;背景色、显示位置、边框样式、边框颜色等等。 以下我们将常用的属性设置列…...

商丘做手机做网站/好项目推荐平台

GTK中的构件II(Widgets)GTK中的构件II(Widgets)在本章的GTK程序设计中&#xff0c;我们仍然要继续向大家介绍和展示各种各样的构件。GtkComboBoxGtkComboBox构件的作用是让程序使用者根据不同的需求从很多选项中进行选择。#include <gtk/gtk.h>void combo_selected(GtkWi…...

筑巢网站后台管理系统/清远新闻最新

2021中国汽车软件质量峰会”。将于2021年3月18-19日在上海召开&#xff0c;以“主题演讲互动解疑圆桌讨论”的形式&#xff0c;聚焦汽车软件质量开发与管理发展的需求点和痛点分析&#xff0c;致力于解决汽车软件市场难点&#xff0c;巩固未来驾驶的安全保障。点击图片查看会议…...