信号相关性学习笔记及matlab分析声波(振动)信号相关性实例

信号相关性理论知识

在此之前,本人对信号相关性的知识知之甚少。感谢The_last_knight与只是有点小怂两位博主的分享:
信号相关性从向量内积说起
利用matlab函数xcorr对信号进行相关分析(包含为何加上无偏估计参数)
下面附上本人的一些理解:
信号相关性指的是一个信号与它自身或其他信号在各个时刻的相似程度。通过研究信号的相关性,可以在工程实际中有很好的应用,比如声波通信、测距等。通过分析发射出去的信号和接受到回波的信号的相关程度,可提取很多有用的信息,如延迟时间,知道延迟时间就可以得到距离信息。
前面提到的两位博主在理解信号相关性的时候有两种不同的理解方式,前者从向量的角度阐述了信号相关性的含义,后者从概率论中的数学期望的角度出发。都易于理解。在这里不再叙述。
信号相关分为自相关和互相关,其中自相关是表达信号与其自身相关程度的概念,而互相关则是表示不同信号间相关程度的概念。

能量信号与功率信号

在学习信号相关性之前有必要搞明白能量信号和功率信号之间的区别。
在这里参考了括号先森关于能量信号和功率信号的博文
在这里只说结论:
对于一个信号来说,若它的能量有限且功率为零,则为能量信号;若能量无穷大且功率有限,则为功率信号;若能量无穷且功率也是无穷大,那这种信号称为非功非能信号。
值得注意的是所有的周期信号都是功率信号,所有的有限数量脉冲信号都是能量信号。

相关性涉及的公式

  • 能量信号的相关性度量
    能量信号的互相关由以下公式定义:
    能量信号互相关公式
    其中Rxy[l]表示x[n]和y[n-l]之间的相关性大小,它的值越大代表两个序列之间的相关程度越高,即这两个序列越相似。
    互关性的性质:互相关序列是一个奇序列。
    将上述公式中的y替换为x就可以得到能量信号的自相关序列,它是一个偶序列。特别的,当自相关序列中l=0时,rxx[0]就是序列x[n]的能量。
  • 周期信号和功率信号的相关性
    对于功率信号,它的能量为无穷大,对与序列x[n]和y[n]的互相关可定义为:
    功率信号互相关公式
    通过将上述公式中的y[n]替换为x[n]可得到功率信号的自相关公式。
    若x[n]和y[n]为周期信号,周期时N ,那么其互相关序列为:周期信号互相关序列

自相关序列为:
周期信号自相关序列
从上述可以知道Rxy[n]和Rxx[n]都是周期为N的周期序列。

matlab中相关性函数xcorr在声波(振动)信号处理中的应用

  • matlab中xcorr函数的用法
xcorr(x,y,'option);

其中x,y,表示两个序列,就是所说的信号。在具体应用时可以手动导入,或者使用程序的方法读取;option表示不同的参数,当option是
"biased"为有偏的互相关函数估计;
"unbiased"为无偏的互相关函数估计;
"coeff"为0延时归一化序列的自相关计算;
"none"为原始的互相关计算

  • 在声波(振动)信号中的应用
    matlab应用程序:
clc;
subplot(3,1,1);
plot(CH1);//绘制手动导入的原始数据
DATA1=CH1(53540:66060);//截取一个脉冲响应数据
DATA2=CH1(103700:116220);//再截取一个脉冲响应数据
t1=TIME(53540:66060);
t2=TIME(103700:116220);
subplot(3,1,2);
plot(t1,DATA1);
hold on;
plot(t2,DATA2);//将两个脉冲响应波形绘制在同意坐标系下

[a,b]=xcorr(DATA1,DATA2,'coeff');//采用归一化的相关系数表示相关性分析结果
 subplot(3,1,3);
plot(b,a);//绘制相关性序列

如下图所示为使用示波器采集的振动信号原始波形数据:
原始声波波形数据
上图中时一连串的冲击响应,取其中两个冲击响应作为分析他们的相关性,以此为依据研究冲击响应的稳定性。截取的两个响应数据如下图:
截取的两个冲击响应的数据
采用xcorr函数分析后的结果如下:
相关性分析结果
上图中横坐标为延迟时间,纵坐标为相关系数。
结果表明两个脉冲信号的相关性达到了0.65左右,有很强的相关程度。证明该冲激响应的稳定性很高。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐