热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【20220627】【信号处理】自相关函数的定义、计算方法及应用

目录一、定义1.1概念引入1.2自相关定义1.3一个小例子二、性质三、Matlab仿真四、应用一、定义1.1概念引入要描述两个信号之间的相似性,仅用“

目录

一、定义

1.1 概念引入

1.2 自相关定义

1.3 一个小例子 

二、性质

三、Matlab 仿真

四、应用




一、定义


1.1 概念引入

        要描述两个信号之间的相似性,仅用 “很像”、“不太像” 等的描述就显得十分模糊,因此就需要一个指标定量描述信号间的相似程度。根据 “相关函数” 那篇文章可以知道,相关函数的物理意义就是用于定量描述两个随机信号之间的线性相关性,计算公式为:

\rho_{x,y}=\frac{cov(X, Y)}{\sqrt{D(X)}\sqrt{D(Y)}}=\frac{\sigma_{x,y}}{\sigma_x\sigma_y}

        相关系数的定义及相关性质详见:【20220623】【信号处理】深入理解Pearson相关系数和Matlab corr()、corrcoef()仿真_Satisfying的博客-CSDN博客

        相关函数可分为自相关函数、互相关函数和协方差函数。自相关函数是描述同一个随机信号 x(t) 在任意不同时刻 t_1, t_2 的取值之间的线性相关程度;互相关函数式描述两个不同的随机信号 x(t), y(t) 在任意不同时刻 t_1, t_2 的取值之间的线性相关程度。本文重点介绍自相关函数。


1.2 自相关函数定义

        自相关函数(ACF, Auto Correlation Function)是描述某一个随机信号在不同时刻之间的相关程度。自相关函数相当于对信号本身做 “互相关”,表示同一序列不同时刻的相关程度。利用自相关函数的物理意义,它可以用来寻找信号中的重复模式(比如寻找淹没在噪声中周期信号的周期),还可以识别丢失的基频等。自相关函数常用大写字母 R 表示,其定义式为:

R_{x,x}=E(x(t_1), x(t_2))

        对于连续信号,定义式为:

 R_{x,x}(\tau)=\int_{-\infty}^{+\infty}x(t)x(t+\tau)dt

        对于离散信号,定义式为:

R_{x,x}(n)=\sum_{n=-\infty}^{+\infty}x(m)x(m+n)

        也就是说,自相关函数就是信号 x(t) 和信号的时延 x(t+\tau) 的乘积之和,自相关函数曲线是时延 \tau 的函数。

        区分自相关函数和自相关系数:自相关系数类似于相关系数的概念,它是没有量纲的。自相关系数常用希腊字母 \rho 表示,其定义式为(定义式就是自相关函数和自相关系数的转换关系式):

\begin{align} \rho_{x,x}&=\frac{cov(x(t_1), x(t_2))}{\sigma_{x(t_1)}\sigma_{x(t_2)}}\nonumber\\ &=\frac{E[x(t_1)x(t_2)]-E[x(t_1)]E[x(t_2)]}{\sigma_{x(t_1)}\sigma_{x(t_2)}}\nonumber\\ &=\frac{R_{x,x}-\mu_x^2}{\sigma_x^2}\nonumber \end{align}


1.3 一个小例子 

        假如有一个时间序列 x(n)=1,2,3,4,5,6,7,8,9,10,根据离散信号的定义,做如下计算:

R_{x,x}(-9)=1*10=10

R_{x,x}(-8)=1*9+2*10=29

R_{x,x}(-7)=1*8+2*9+3*10=56

R_{x,x}(-6)=1*7+2*8+3*9+4*10=90

R_{x,x}(-5)=1*6+2*7+3*8+4*9+5*10=130

R_{x,x}(-4)=1*5+2*6+3*7+4*8+5*9+6*10=175

R_{x,x}(-3)=1*4+2*5+3*6+4*7+5*8+6*9+7*10=224

R_{x,x}(-2)=1*3+2*4+3*5+4*6+5*7+6*8+7*9+8*10=276

R_{x,x}(-1)=1*2+2*3+3*4+4*5+5*6+6*7+7*8+8*9+9*10=330

R_{x,x}(0)=1*1+2*2+3*3+4*4+5*5+6*6+7*7+8*8+9*9+10*10=385

R_{x,x}(1)=2*1+3*2+4*3+5*4+6*5+7*6+8*7+9*8+10*9=330

\cdots\cdots

        解释:虽然相关函数定义是从负无穷到正无穷,但是移位之后有交叉的部分乘积才不为零,因此只计算交叉部分即可。因此,长度为 10 的时间序列,自相关函数的结果是 1*19 的数组。即,长度为 N 的时间序列,其自相关函数是长度为 2N-1 的数组。 


二、性质


  1. 自相关函数是偶函数R_{x,x}(\tau)=R_{x,x}(-\tau),自相关系数曲线关于 \tau=0 对称;
  2. 当 \tau=0 时,自相关函数取得最大值,即:R_{x,x}(\tau)_{max}=R_{x,x}(0),其物理意义为信号的均方值;
  3. 周期信号的自相关函数仍为同频率的周期信号
  4. 若随机信号不含周期成分,当 \tau 趋于无穷大时,自相关函数趋于信号平均值的平方。

        性质的证明过程详见:【20220629】【信号处理】(平稳随机信号)自相关函数性质的证明过程


三、Matlab 仿真

        Matlab 中求时间序列自相关的函数命令为:xcorr()

%% 自相关函数
clear; clc; close all; warning off;xn = 1 : 10;
[xn_autoxcorr, tau]= xcorr(xn); % 时间序列xn的自相关函数曲线
figure(1); clf;
plot(tau, xn_autoxcorr, 'linewidth', 1.2);
xlabel('\tau'); ylabel('自相关系数'); title('xn的自相关函数曲线');
set(gca, 'fontsize', 14);


四、应用


  1. 回波检测;
  2. 分析出信号中的噪声并进行去噪;
  3. 检测淹没在随机噪声中的周期信号;
  4. 从畸变的波形中分离出基波和谐波等。


推荐阅读
  • 展开全部下面的代码是创建一个立方体Thisexamplescreatesanddisplaysasimplebox.#Thefirstlineloadstheinit_disp ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • 本文介绍了机器学习手册中关于日期和时区操作的重要性以及其在实际应用中的作用。文章以一个故事为背景,描述了学童们面对老先生的教导时的反应,以及上官如在这个过程中的表现。同时,文章也提到了顾慎为对上官如的恨意以及他们之间的矛盾源于早年的结局。最后,文章强调了日期和时区操作在机器学习中的重要性,并指出了其在实际应用中的作用和意义。 ... [详细]
  • 本文介绍了Swing组件的用法,重点讲解了图标接口的定义和创建方法。图标接口用来将图标与各种组件相关联,可以是简单的绘画或使用磁盘上的GIF格式图像。文章详细介绍了图标接口的属性和绘制方法,并给出了一个菱形图标的实现示例。该示例可以配置图标的尺寸、颜色和填充状态。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • LeetCode笔记:剑指Offer 41. 数据流中的中位数(Java、堆、优先队列、知识点)
    本文介绍了LeetCode剑指Offer 41题的解题思路和代码实现,主要涉及了Java中的优先队列和堆排序的知识点。优先队列是Queue接口的实现,可以对其中的元素进行排序,采用小顶堆的方式进行排序。本文还介绍了Java中queue的offer、poll、add、remove、element、peek等方法的区别和用法。 ... [详细]
  • 本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]
  • C语言注释工具及快捷键,删除C语言注释工具的实现思路
    本文介绍了C语言中注释的两种方式以及注释的作用,提供了删除C语言注释的工具实现思路,并分享了C语言中注释的快捷键操作方法。 ... [详细]
  • 本文介绍了Perl的测试框架Test::Base,它是一个数据驱动的测试框架,可以自动进行单元测试,省去手工编写测试程序的麻烦。与Test::More完全兼容,使用方法简单。以plural函数为例,展示了Test::Base的使用方法。 ... [详细]
  • 判断数组是否全为0_连续子数组的最大和的解题思路及代码方法一_动态规划
    本文介绍了判断数组是否全为0以及求解连续子数组的最大和的解题思路及代码方法一,即动态规划。通过动态规划的方法,可以找出连续子数组的最大和,具体思路是尽量选择正数的部分,遇到负数则不选择进去,遇到正数则保留并继续考察。本文给出了状态定义和状态转移方程,并提供了具体的代码实现。 ... [详细]
  • 成功安装Sabayon Linux在thinkpad X60上的经验分享
    本文分享了作者在国庆期间在thinkpad X60上成功安装Sabayon Linux的经验。通过修改CHOST和执行emerge命令,作者顺利完成了安装过程。Sabayon Linux是一个基于Gentoo Linux的发行版,可以将电脑快速转变为一个功能强大的系统。除了作为一个live DVD使用外,Sabayon Linux还可以被安装在硬盘上,方便用户使用。 ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • 闭包一直是Java社区中争论不断的话题,很多语言都支持闭包这个语言特性,闭包定义了一个依赖于外部环境的自由变量的函数,这个函数能够访问外部环境的变量。本文以JavaScript的一个闭包为例,介绍了闭包的定义和特性。 ... [详细]
  • C++中的三角函数计算及其应用
    本文介绍了C++中的三角函数的计算方法和应用,包括计算余弦、正弦、正切值以及反三角函数求对应的弧度制角度的示例代码。代码中使用了C++的数学库和命名空间,通过赋值和输出语句实现了三角函数的计算和结果显示。通过学习本文,读者可以了解到C++中三角函数的基本用法和应用场景。 ... [详细]
  • C++字符字符串处理及字符集编码方案
    本文介绍了C++中字符字符串处理的问题,并详细解释了字符集编码方案,包括UNICODE、Windows apps采用的UTF-16编码、ASCII、SBCS和DBCS编码方案。同时说明了ANSI C标准和Windows中的字符/字符串数据类型实现。文章还提到了在编译时需要定义UNICODE宏以支持unicode编码,否则将使用windows code page编译。最后,给出了相关的头文件和数据类型定义。 ... [详细]
author-avatar
手机用户2502852635_269
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有