MATLAB-xcorr函数

一、函数调用格式及说明

  1. r=xcorr(x,y)

返回两个离散时间序列的互相关。互相关反映向量x和移位(滞后)向量y之间的相似性,形式为滞后的函数。如果x和y的长度不同,函数会在较短向量的末尾添加0,使其长度与另一个向量相同。
r ( n ) = ∑ k = − ∞ ∞ x ( k ) y ( n + k ) r(n)=\sum_{k=-∞}^{∞}x(k)y(n+k) r(n)=k=x(k)y(n+k)

  1. r=xcorr(x)

返回x的自相关序列。如果x为矩阵,则r也是矩阵,其中包含x所有列组合的自相关和互相关序列;

如果x为M×N矩阵,则xcorr(x)返回 ( 2 M − 1 ) × N 2 (2M-1)×N^2 (2M1)×N2矩阵;如果指定了maxlag,则r的大小为 ( 2 × m a x l a g + 1 ) × N 2 (2×maxlag+1)×N^2 (2×maxlag+1)×N2

  1. r=xcorr(__,maxlag)
    maxlag规定为整数标量,将滞后范围限制为从-maxlag到maxlag;如果没有指定maxlag,则滞后范围等于2N-1,其中N是x和y中较长一方的长度。

  2. r=xcorr(__,scaleopt)
    指定归一化选项。

scaleopt-归一化选项说明
‘none’(默认)原始、未缩放的互相关。当x和y长度不同时,'none’是唯一有效的选项
‘biased’互相关的有偏估计: R x y , b i a s e d ( m ) = 1 N R x y ( m ) R_{xy,biased(m)}=\frac{1}{N}R_{xy(m)} Rxy,biased(m)=N1Rxy(m)
‘unbiased’互相关的无偏估计: R x y , u n b i a s e d ( m ) = 1 N − ⌈ m ⌉ R x y ( m ) R_{xy,unbiased(m)}=\frac{1}{N-\left \lceil m\right \rceil}R_{xy(m)} Rxy,unbiased(m)=Nm1Rxy(m)
‘normalized’或’coeff’对序列进行归一化,使零滞后时的自相关等于1: R x y , c o e f f ( m ) = 1 R x x ( 0 ) R y y ( 0 ) R x y ( m ) R_{xy,coeff(m)}=\frac{1}{\sqrt{R_{xx}(0)R_{yy}(0)}}R_{xy(m)} Rxy,coeff(m)=Rxx(0)Ryy(0) 1Rxy(m)

5.[r,lags]=xcorr(__)
还返回用于计算相关性的滞后,lags为滞后索引,以向量形式返回。

二、函数应用示例

1. 两个向量的互相关
%%%%%%%%%% 示例1:计算x和y两个向量的互相关 %%%%%%%%%%
n=0:15;
x=0.84.^n;            %x的长度N=16
y=circshift(x,5);     %x右移5个元素,circshift是一个循环移位函数
[c,lags]=xcorr(x,y);  %计算结果c的长度为2N-1
stem(lags,c);         %stem函数用于绘制火柴梗图,在lags的指定点处按照茎状形式画出数据序列c,以圆圈终止,lags大小与c一致
                      %在x和y的元素完全匹配的滞后值(-5)处,出现最大峰值。

在这里插入图片描述

2. 向量的自相关
%%%%%%%%%% 示例2:计算向量x的自相关 %%%%%%%%%%
n=0:15;
x=0.84.^n;            %x的长度N=16
[c,lags]=xcorr(x);    %计算结果c的长度为2N-1=31
stem(lags,c);         %lags值为-1515,长度与c一致
                      %在零滞后时(此时x与自身完全匹配),出现最大峰值

在这里插入图片描述

3.归一化的互相关
%%%%%%%%%% 示例3:计算归一化的互相关 %%%%%%%%%%
n=0:15;
x=0.84.^n;           
y=circshift(x,5);     
[c,lags]=xcorr(x,y,10,'normalized');  %使用单位峰值计算并绘制向量x和y的归一化互相关,并指定最大滞后为10
stem(lags,c);                         %c和lags均为长度为21的向量

在这里插入图片描述

三、线性卷积与互相关

线性卷积的定义为:
y ( n ) = ∑ k = − ∞ ∞ x ( k ) h ( n − k ) y(n)=\sum_{k=-∞}^{∞}x(k)h(n-k) y(n)=k=x(k)h(nk)
互相关的定义为:
y ( n ) = ∑ k = − ∞ ∞ x ( k ) h ( n + k ) y(n)=\sum_{k=-∞}^{∞}x(k)h(n+k) y(n)=k=x(k)h(n+k)
可以看出,线性卷积与互相关的区别在于计算之前是否存在反褶,其计算思路是一致的,都是通过滑窗的思想。

clear all;
close all;
clc;

x1=[1,1,3,4,2];
x2=[1,3,2];
N=length(x1);
M=length(x2);
% 线性卷积:先将x2反褶,然后滑动x2计算结果
y1=conv(x1,x2);         % 计算x1和x2的线性卷积,线性卷积结果的长度为L=N+M-1
% 互相关:x1和x2的长度不同,先在较短向量的末尾添加0,然后滑动x2计算结果
y2=xcorr(x1,x2);        % 计算x1和x2的互相关,互相关结果的长度为L=2N-1

线性卷积
互相关

  • 37
    点赞
  • 161
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值