精华内容
下载资源
问答
  • 自相关函数和互相关函数的利用MATLAB计算和作图
    千次阅读
    2021-04-18 04:43:12

    互相关函数,自相关函数计算和作图

    1.自相关和互相关的概念。

    ●互相关函数是描述随机信号x(t),y(t)在任意两个不同时刻t1,t2间的相关程度。

    ●自相关函数是描述随机信号x(t)在任意两个不同时刻t1,t2间的相关程度。

    互相关函数是在频域内两个信号是否相关的一个判断指标,把两测点之间信号的互谱与各自的自谱联系了起来。它能用来确定输出信号有多大程度来自输入信号,对修正测量中接入噪声源而产生的误差非常有效。

    -----------------------------------------------------------------------------------事实上,在图象处理中,自相关和互相关函数的定义如下:设原函数是f(t),则自相关函数定义为R(u)=f(t)*f(-t),其中*表示卷积;设两个函数分别是f(t)和g(t),则互相关函数定义为R(u)=f(t)*g(-t),它反映的是两个函数在不同的相对位置上互相匹配的程度。

    2.利用matlab中实现这两个相关并用图像显示:

    自相关函数:

    dt=.1;

    t=[0:dt:100];x=cos(t);

    [a,b]=xcorr(x,'unbiased');

    plot(b*dt,a)

    d4c696dea7de46c349458e06b9a89f51.png

    更多相关内容
  • 自相关函数

    千次阅读 2021-06-09 10:12:42
    自相关函数 相关,也叫做序列相关,是一个信号于其自身在不同时间点的互相关。非正式地来说,它就是两次观察之间地相似度对他们之间地时间差的函数。它是找出重复模式(如被噪声掩盖的周期信号),或识别隐含在...

    自相关函数

    自相关,也叫做序列相关,是一个信号于其自身在不同时间点的互相关。非正式地来说,它就是两次观察之间地相似度对他们之间地时间差的函数。它是找出重复模式(如被噪声掩盖的周期信号),或识别隐含在信号谐波频率中消失的基频的数学工具。常用于信号处理中分析函数或者一系列值,如时域信号。
    在信号处理中
    在这里插入图片描述
    可以看出在自相关函数中所有函数值中0的值最大。

    相关函数的应用非常广泛,许多实际问题都可以用相关函数来解决,如测距、噪声源的判断、管道漏点检测等。

    先附上例子

    求一个离散序列的自相关系数,A = [1 2 3 4] ,求A的自相关系数。
    求解过程如下
    在这里插入图片描述

    求得结果为:[4 11 20 30 20 11 4]
    自相关的结果为2N-1个,关于N对称。

    c代码

    接下来附上完整的c代码
    在这里插入图片描述

    展开全文
  • 自相关函数与互相关函数

    万次阅读 2021-01-16 23:49:31
    1 概念 相关函数是描述信号X(s),Y(t)(这两个信号可以是随机的,也可以是确定的)在任意两个不同时刻s、t的取值之间的相关程度。...自相关函数是描述随机信号 x(t) 在任意不同时刻 t1,t2 的取值之间的相...

    目录

    1 概念

    2 自相关函数

    2.1 定义

    2.2 性质

    3 互相关(cross-correlation)函数

    3.1 定义

    3.2 性质

    3.3 线性互相关(linear cross-correlation)

    3.4 循环互相关(Circular Cross-Correlation)的定义和计算

    3.5 用线性互相关处理周期性信号

    3.6 相关问题QA

    3.7 参考资料


    1 概念

          相关函数是描述信号X(s)Y(t)(这两个信号可以是随机的,也可以是确定的)在任意两个不同时刻s、t的取值之间的相关程度。两个信号之间的相似性大小用相关系数来衡量。定义:

            

            称为变量 X 和 Y 的相关系数。若相关系数 = 0,则称 X与Y 不相关。相关系数越大,相关性越大,但肯定小于或者等于1.。

            

            相关函数分为自相关互相关

    • 自相关函数是描述随机信号 x(t) 在任意不同时刻 t1,t2 的取值之间的相关程度。
    • 互相关函数是描述随机信号 x(t)、y(t) 在任意两个不同时刻s,t的取值之间的相关程度

    自相关函数

    2.1 定义

            自相关函数是描述随机信号 x(t) 在任意不同时刻 t1,t2的取值之间的相关程度。自相关函数,是对信号自身的互相关, 表示同一序列不同时刻的相关程度。是用寻找重复模式的数字工具,就如一个存在被覆盖噪声的周期信号,或识别丢失的基频。它经常被用于信号处理中的分析函数或序列,如时域信号 。定义式:

            

    或者:

            

    2.2 性质

    主要性质如下:

    自相关系数:

    3 互相关(cross-correlation)函数

    3.1 定义

            自相关是互相关的一种特殊情况.。互相关函数是描述随机信号 x(t)、y(t) 在任意两个不同时刻 s,t 的取值之间的相关程度,其定义为: 

               

            对于连续函数,有定义:

          

           对于离散的,有定义:

          

            从定义式中可以看到,互相关函数卷积运算类似,也是两个序列滑动相乘,但是区别在于:互相关的两个序列都不翻转,直接滑动相乘,求和;卷积的其中一个序列需要先翻转,然后滑动相乘,求和。所以,f(t)g(t) 做相关等于 f*(-t)g(t) 做卷积。

            在图象处理中,自相关和互相关函数的定义如下:设原函数是 f(t),则自相关函数定义为 R(u)=f(t)*f(-t),其中*表示卷积;设两个函数分别是f(t)和g(t),则互相关函数定义为R(u)=f(t)*g(-t),它反映的是两个函数在不同的相对位置上互相匹配的程度。

    3.2 性质

    互相关函数的性质:

    互相关系数:

            正如卷积有线性卷积(linear convolution)循环卷积(circular convolution)之分;互相关也有线性互相关(linear cross-correlation)循环互相关(circular cross-correlation)。线性互相关和循环互相关的基本公式是一致的,不同之处在于如何处理边界数据。其本质的不同在于它们对原始数据的看法不同。

    3.3 线性互相关(linear cross-correlation)

            假设我们手里有两组数据,分别为个和个,表示为:长,即。序列之间的线性互相关操作表示为,其结果也是一个序列,表示为。具体的操作是用这两个序列进行的一种类似“滑动点积”的操作,如图1和图2所示。

    图1. 线性互相关的计算过程示意

    图2. 线性互相关结果序列中单个值计算示意

            得到的互相关序列总长度为,该序列的前和后个数值是无效的,有效的数据共个。线性互相关的有效数据第个分量的值为:

    注意,线性互相关并不满足交换律,即:

            

            一个简单的应证是,等式两侧操作所得结果的有效数据个数都不一致。

            线性相关的实际意义是,向量中的各个与向量等长的子向量与向量的相似程度。这样,中值最大的索引就是与向量中与最相似的子向量的起始索引。通常,为了获得有效的互相关数据,我们总是用较短的数据去滑动点积较长的数据。

            用一个实际的应用例子来验证一下吧。如图3的第一个子图表示雷达声纳发射了一个探测信号。经过一段时间之后,收到了如图3的第二个子图所示的回波(带有一定的噪声)。此时我们关注的是如何确定回波中从何时开始是对探测信号的响应,以便计算目标距雷达的距离,这就需要用到线性互相关。在第三个子图中的‘Valid’曲线即是有效互相关数据,其中清晰地呈现出两处与探测信号相似的回波的位置。

    图3. 相关计算的一个例子:雷达回波分析

            线性互相关中,还有一些概念值得注意:

    • 一是补零。由线性相关的计算式不难发现,为了计算出个完整的相关系数序列(包含那些“无效数据”在内的所有结果),需要用到一些“不存在”的点。这就需要人为地对这些值进行补充,在线性相关的计算中,对这些超出原始数据储存的区域取值为零。
    • 二是末端效应。由图1可以发现,一头一尾的个互相关数据并没有完全“嵌入”两个原始数组的全部信息,它们或多或少地受到了人为补零的影响。因此一般认为这些数据是不可用的。
    • 三是计算模式的选择。这个问题其实是由问题二衍生而来的,就Python语言中的函数而言,至少有两个可以直接计算线性相关:

    numpy.correlate(a, v, mode)scipy.signal.correlate(a, v, mode)

    它们的调用参数完全相同。在调用时有三种模式可供选择,它们计算的内容是相同的,但是返回值长度各不相同:
    mode = ‘valid’:只返回有效的那一部分相关数据,共$M-N+1$个;
    mode = ‘same’:只返回与 等长的那一部分相关数据,共$N$个;
    mode = ‘full’:返回全部相关数据,共$M+N-1$个。
    图3的第三个子图展示了这三种模式的计算结果,在那个例子中,‘valid’模式是最合适的。

    3.4 循环互相关(Circular Cross-Correlation)的定义和计算

            循环互相关是表征两组等长周期性数据之间相似性的操作,其与线性互相关的区别也正由“等长”“周期性”这个两特点产生。在循环互相关中,被处理的原始数据是等长的,即。序列之间的线性互相关操作表示为,其结果也是一个序列,表示为。其计算式与线性互相关的写法是一致的:

            

            只是得到的互相关序列长度也为。循环互相关的计算的具体过程如图4所示,注意到在计算时要用到超出原始数据索引范围的数据,其数据补充方式并不是“补零”而是“周期延拓”:即。这意味着对于循环互相关,不存在不同的计算模式之分,所有的数据都是有效数据

    图4. 循环互相关的计算过程示意

            注意,循环互相关也不满足交换律

            这里给出了一个关于循环相关的算例。两路原始数据分别由如下函数生成:

            

            

            如果视为某个线性系统的周期输入信号,而视为这个线性系统的输出信号。由于存在外接干扰,因此输出信号不完全由输入信号决定。此时,循环互相关的实际意义是,分辨输出信号中的哪一个部分(频率成分)是由该输入信号产生的。

     

    图5. 时域数据,从上到下:和他们的循环互相关

    图6. 频谱,从上到下:和他们的循环互相关

            从图5和图6可以看出,循环互相关的频谱准确地说明了那些测试信号的相关性。

            遗憾的是,在Python几大数值计算库中,并没有直接可计算循环相关的函数。但是可以采用如下代码构造出一个可用的(经过归一化的)cxcorr(a, v)函数出来:

    def cxcorr(a,v):
    nom = np.linalg.norm(a[:])*np.linalg.norm(v[:])
    return fftpack.irfft(fftpack.rfft(a)*fftpack.rfft(v[::-1]))/nom

            图4中的数据就是通过这个函数计算出来的。其中用到了傅里叶变换反变换来计算循环互相关,这是可行的。它们之间的关系在第四小节的QA中专门讨论。

    3.5 用线性互相关处理周期性信号

            实际上,线性相关也可以处理周期信号,前提是将两组信号采样成长度差异较大的序列。这样,其有效线性互相关也可以完美地反应数据之间的相关性。

            同样采用第二节中的例子。这时为了保证足够的有效线性互相关数据,两组数据的长度故意不一致(但都足够表征其特征),如图7所示。它们的频谱如图8所示,仍然完美地体现了测试数据的相关性。

    图7. 时域数据,从上到下:和他们的线性互相关

    图8. 频谱,从上到下:和他们的线性互相关

            既然线性互相关也能处理周期性数据,为什么还要专门搞一个基于等长序列和周期延拓的循环互相关呢?实际上,正如后文QA中专门讨论的,这是为了利用快速傅利叶变换加速计算。

    3.6 相关问题QA

            至此,两种常用的互相关评价方法及其计算已经总结完毕。然而其中还有一些细节尚待分辨。例如,序列之间的互相关的计算式:

            

            与卷积(convolution)的定义式:

            

    如此类似,如果再联想起傅里叶变换的卷积定理,那么,至少会产生如下的问题:

    Q.1:它们之间有更深意义上的联系吗?
    A.1:文献[1]的答复是坚决的:“不要让求卷积和互相关的数学相似性迷惑你,它们描述了不同的信号处理过程。卷积是系统输入信号、输出信号和冲激响应之间的关系互相关是一种在噪声背景下检测已知信号的方法。二者在数学上的相似仅仅是一种巧合。”实际上,只要注意到卷积操作是满足交换律的,而互相关操作并不满足交换律。仅此一点也许就能说明它们有着本质的不同吧。

    Q.2:可以利用Python中计算卷积的函数来计算互相关吗?
    A.2可以,但是只能用以计算线性互相关。Python中的numpy.convolve()函数就可以计算两个序列之间的卷积。在卷积的计算过程中也会自动进行补零(而不是周期延拓,这就是为什么只能计算线性相关的原因),这种卷积有时被称为线性卷积,同样涉及末端效应、有效数据长度等考虑。具体地,根据相关和卷积的表达式,如果希望计算序列之间的线性互相关序列。等效地,只需要计算序列之间的卷积。表示序列的“反置”,即将序列[1,2,3]反置为[3,2,1]。

    Q.3:可以根据傅立叶变换的性质中有卷积定理,利用傅立叶正/逆变换计算互相关吗?
    A.3可以,但是只能用于计算循环互相关。傅立叶变换的卷积定理中所涉及的卷积是循环卷积。与前述的线性卷积是不同的。实际上不同的并不是卷积本身,它们的计算式是一致的,而是在如何看待参与卷积计算的数据,线性卷积认为参与计算的序列之外都是零,而循环卷积认为参与计算的序列是一个无限循环的数据的一段——这导致了它们对“越界”数据的补齐方式不一样。正如线性互相关和循环互相关的区别!先将循环互相关等效为一个循环卷积,再利用快速傅里叶变换计算卷积即可。实际上本文给出的cxcorr(a, v)函数正是利用这一性质来计算循环相关的。其对计算速度的提升是相当明显的。

    Q.4:怎样进行归一化(normalization),以便于比较互相关数据?
    A.4:根据参考[4],用公式:

    3.7 参考资料

    [1] Steven W. Smith. Digital Signal Processing: A Practical Guide for Engineering and Scientists [M].
    张瑞峰, 詹敏晶 等译. 实用数字信号处理,从原理到应用[M]. 人民邮电出版社, 北京, 2010.
    [2] Mark Owen. Practical Signal Processing [M].
    丘天爽, 李丽, 赵林 译. 实用信号处理 [M]. 电子工业出版社, 北京, 2009.
    [3] 关于MATLAB中的xcorr() 的论述
    http://www.mathworks.cn/cn/help/signal/ref/xcorr.html
    [4] 关于MATLAB中的cxcorr() 的论述
    http://www.mathworks.com/matlabcentral/fileexchange/4810-circular-cross-correlation
    [5] 网络论坛Stackoverflow关于此问题的讨论
    http://stackoverflow.com/questions/6991471/computing-cross-correlation-function
    http://stackoverflow.com/questions/12323959/fast-cross-correlation-method-in-python
    http://stackoverflow.com/questions/9281102/n-fold-fft-convolution-and-circular-overlap
    http://stackoverflow.com/questions/6855169/convolution-computations-in-numpy-scipy
    http://stackoverflow.com/questions/4688715/find-time-shift-between-two-similar-waveforms
    [6] 关于Cross-correlation的定义
    http://mathworld.wolfram.com/Cross-Correlation.html
    http://paulbourke.net/miscellaneous/correlate/
    http://en.wikipedia.org/wiki/Cross-correlation
    [7] 关于 Circular Cross-correlation的定义
    http://en.wikipedia.org/wiki/Circular_convolution
    http://cnx.org/content/m22974/latest/

     

     

     

    自相关函数与互相关函数:http://www.doc88.com/p-5129647069822.html

    互相关(cross-correlation)及其在Python中的实现:https://blog.csdn.net/icameling/article/details/85238412

    第五章:自相关: https://thinkdsp-cn.readthedocs.io/zh_CN/latest/05-autocorrelation.html

    展开全文
  • 简单介绍一下自相关函数ACF和偏自相关函数 PACF的计算和图像显示,概念性的东西可以查阅其他资料了解。 实例 数值计算 import statsmodels.tsa.api as smt time_series = [1,2,3,4,5,6,7,8] acf = smt.stattools....

    前言

    简单介绍一下自相关函数ACF和偏自相关函数 PACF的计算和图像显示,概念性的东西可以查阅其他资料了解。

    实例

    • 数值计算
    import statsmodels.tsa.api as smt
    
    time_series = [1,2,3,4,5,6,7,8]
    acf = smt.stattools.acf(time_series)
    pacf = smt.stattools.pacf(time_series,nlags = 3)
    print(acf)
    print(pacf)
    

    结果展示

    [ 1.          0.625       0.27380952 -0.0297619  -0.26190476 -0.39880952
     -0.41666667 -0.29166667]
    [ 1.          0.71428571 -0.2962963  -0.38947368]
    
    • 图像
    from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
    import matplotlib.pyplot as plt
    import numpy as np
    
    plot_acf(np.array(time_series))
    
    plt.tight_layout()
    plt.show()
    

    在这里插入图片描述

    from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
    import matplotlib.pyplot as plt
    import numpy as np
    
    plot_pacf(np.array(time_series),lags=3)
    
    plt.tight_layout()
    plt.show()
    

    在这里插入图片描述

    总结

    • ACF 和 PACF 在AR 、MA 和ARMA模型中举重若轻
    • 截尾:在大于某个常数k后快速趋于0为k阶截尾
    • 拖尾:始终有非零取值,不会在k大于某个常数后就恒等于零(或在0附近随机波动)
    展开全文
  • 小虎在这里介绍了相关函数的意义和工程应用,工程应用以提取受噪声干扰的周期信号为例,并用MATLAB进行仿真。
  • 自相关函数&互相关函数

    千次阅读 2019-08-15 23:22:45
    为比较某信号与另一延时的信号之间的相似度,需要引入相关函数的概念。相关函数是鉴别信号的有力工具,被广泛应用于雷达回波的识别,通信同步信号的识别等领域。相关函数 也称为相关积分,它与卷积的运算方法类似。 ...
  • 随机信号及其自相关函数和功率谱密度的MATLAB实现
  • 图像中通常采用自相关函数作为纹理测度 自相关函数的定义为: 调用自定义函数 zxcor()对砖墙面和大理石面纹理进行分析: 自定义函数 zxcor(): function [epsilon,eta,C] = zxcor( f,D,m,n ) % 自相关...
  • 在学习概率统计之前,我学习的都是确定的函数。概率统计讨论了一次取值时获得的值是不确定的,而随机过程讨论了不确定会发生哪个时间函数。 每个x(t)函数(样本函数)就是实际发生的一个表达式确定的函数,...自相关函数
  • 摘要:Python中,更确切地说是numpy、scipy、statsmodels这些库中都有计算相关的方法。但numpy和scipy中的correlate方法的定义和MATLAB中的不同,导致计算结果不太一样。看上去MATLAB和statsmodels里都是用的标准的...
  • Python计算离散序列的自相关函数

    千次阅读 2019-12-02 19:41:49
    Python计算离散序列的自相关函数 离散时间序列的自相关函数其实就是若干阶相关系数的组合,其中,相关系数的计算公式如下: 其中 h 为阶数,μ为序列的均值,比如计算离散时间序列 : [2, 3, 4, 3, 7] 的自相关...
  • 证明自相关函数是偶函数

    千次阅读 2020-11-15 17:59:43
    证明自相关函数是偶函数
  • 循环自相关函数,matlab程序

    热门讨论 2010-05-07 09:33:48
    自己写的关于循环自相关函数的快速计算方法,不同的调制方式只要更改x_t表达式即可
  • 自相关函数的理解

    万次阅读 多人点赞 2016-12-13 14:42:08
    每个小x(t)函数(样本函数)就是实际发生的一个表达式确定的函数,对每个小x(t)的处理,都是与之前确定函数的处理方法相同的,但是由于我们没法确定某次究竟发生哪个确定表达式的小x(t),所以我们只能研究发生...
  • 自相关函数R(t1,t2):为了衡量随机过程x(t)在任意两个时刻(t1,t2)上获得的随机变量之间的关联程度。 R(t1,t2) = E[ x(t1) x(t2) ] 或者写成 R(τ) = E[ x(t) x(t+τ) ] 互相关函数:是描述随机信号x(t),y(t)在...
  • 自相关函数,互相关函数

    万次阅读 2016-11-15 15:20:49
    1. 首先说说相关和互相关的概念...函数是描述随机信号x(t),y(t)在任意两个不同时刻t1,t2的取值之间的相关程度,自相关函数是描述随机信号x(t)在任意两个不同时刻t1,t2的 取值之间的相关程度。  自相关函数
  • (1)、自相关函数 求解步骤:(1)移位;(2)相乘;(3)相加。 function y = myXcorr(x) %输入x:长度为n的一维行向量 %输出y:长度为2n-1的一维行向量 %求解步骤:(1)移位;(2)相乘;(3)相加. n = length(x); %...
  • 自相关函数 互相关函数自协方差矩阵 互协方差矩阵的区别联系 [3]: https://mermaidjs.github.io/ [4]: http://adrai.github.io/flowchart.js/
  • 由于时间序列通常具有较强的相关性,我们通常使用协方差函数与自相关函数(ACF)来描述时间序列。当时间序列具有宽平稳的性质时,可以使用样本数据来估计它们,下面介绍ACF(k)的计算方法。 假设时序   共有...
  • 自相关函数-浅学

    万次阅读 多人点赞 2018-05-24 11:40:05
    老板要求做个自相关函数的处理模块,要求逻辑正确,高速处理, c++实现,别人解释了下什么是自相关函数,又查了些资料,记录一些浅薄的理解,理解不一定正确,先看简单的两条曲线 A 和B:离散化后,这两条曲线的平均...
  • 简单总结一下归一化自相关函数,防止遗忘掉 上图,参考论文中的Normalized Auto-correlation based Step Counting. 自相关函数是函数与函数本身的相关性,如果进行归一化,会看的更清楚。互相关函数是两个函数...
  • 时频域能量相等(parseval定理) 在 物理学 和 工程学 中, 帕塞瓦尔定理通常描述如下: 帕塞瓦尔定理的此表达形式解释了波形x(t...分别理解了功率谱密度和自相关函数之后,开始看二者互为傅里叶变换对的原因。
  • 文章目录1、能量信号的能量谱密度2、确定功率信号的功率谱密度3、确定信号的自相关函数与Wiener-Khintchine定理 1、能量信号的能量谱密度   我们首先回顾下帕塞瓦尔定理,对于能量信号g(t)g(t)g(t),有 (1)∫−∞...
  • matlab中的xcorr 自相关函数(转)

    万次阅读 2017-12-31 20:19:26
    Matlab中用于计算自相关函数的指令是xcorr.比如矩阵A=[1 2 3];  xcorr(A)=3.0000 8.0000 14.0000 8.0000 3.0000 自相关函数是信号间隔的函数,间隔有正负间隔,所以n个长度的信号,有2n-1个相关函数值,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,345,111
精华内容 938,044
关键字:

自相关函数

友情链接: DT clas.zip