一个例子学会自相关互相关的计算

您所在的位置:网站首页 两个相关系数r公式的互推怎么算 一个例子学会自相关互相关的计算

一个例子学会自相关互相关的计算

2024-07-14 03:34| 来源: 网络整理| 查看: 265

问题

A = [1 2 3 4] ,求A的自相关系数。 求解过程如下图: pic 求得结果为:[4 11 20 30 20 11 4] 自相关的结果为2N-1个,关于N对称。

理解matlab中的xcorr 1. 求两个序列的互相关 x = [1 2 3 4 5 6 7 8]; [r,lags] = xcorr(x);

求得:

r = [8 23 44 70 100 133 168 204 168 133 100 70 44 23 8] lags = [-7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7]

lags就是偏移量,默认从最小的偏移量开始,信号长度是8,往左偏移最多7位,往右偏移做多也是7位。也理解了为什么求出来的自相关结果的长度位15=2N-1。 pic2

2. 求给定偏移量不大于p的自相关函数 x = [1 2 3 4 5 6 7 8]; [r,lags] = xcorr(x, 4);

这里设定最大偏移量不大于4,考虑正负偏移和0,所以对于指定偏移范围的自相关计算,其结果为2p+1个。

lags = [-4 -3 -2 -1 0 1 2 3 4]

r 的计算如法炮制: pic3

r = [70 100 133 168 204 168 133 100 70] 3. 计算无偏估计及其他

Matlab提供的xcorr提供了一个归一化选项: pic5 在谱估计的时候,经常要用到自相关函数的有偏估计,下面求一个。

[r,lags] = xcorr(x, 4, 'biased');

按照上面的公式,N为信号长度,可以猜测r的结果为:

[70/8 100/8 133/8 168/8 204/8 168/8 133/8 100/8 70/8]

使用matlab计算:

>> xcorr(x, 4, 'biased') ans = 列 1 至 8 8.7500 12.5000 16.6250 21.0000 25.5000 21.0000 16.6250 12.5000 列 9 8.7500

一模一样。

4. 互相关的例子 >> x = [1 2 3 4]; >> y = [1 4 9 16]; >> xcorr(x, y) ans = 16.0000 41.0000 70.0000 100.0000 50.0000 19.0000 4.0000 K>>

怎么算的?跟上面一样,自行脑补。

5. 题外话

matlab的帮助文档写得非常好,比外面乱七八糟抄来抄去说不清的博客好太多了,还权威。

参考:xcorr 互相关

自相关的概念的理解也可以参考这个博文,个人认为写得挺好。

还有博主自己手写了一个求自相关函数的算法,并与matlab提供的xcorr做了对比: MATLAB_XCORR_互相关函数的讨论

C++版本: xcorr 自相关 c++实现



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3