xcorr函数 下载本文

内容发布更新时间 : 2024/5/16 2:23:53星期一 下面是文章的全部内容请认真阅读。

xcorr

Cross-correlation 互相关

Syntax

c = xcorr(x,y) c = xcorr(x)

c = xcorr(x,y,'option') c = xcorr(x,'option') c = xcorr(x,y,maxlags) c = xcorr(x,maxlags)

c = xcorr(x,y,maxlags,'option') c = xcorr(x,maxlags,'option') [c,lags] = xcorr(...)

[c,lags] = xcorr(gpuArrayX,gpuArrayY,maxlags,'option')

Description

xcorr estimates the cross-correlation sequence of a random process. Autocorrelation is handled as a special case.

xcorr 函数用于估计随机过程的互相关序列。自相关是互相关的特殊情况。 The true cross-correlation sequence is 真正的互相关序列为:

where xn and yn are jointly stationary random processes, and E {·} is the expected value operator. xcorr must estimate the sequence because, in practice, only a finite segment of one realization of the infinite-length random process is available. xn和 yn都是平稳随机过程, E {·}是求期望的运算符。用xcorr 来估计这些序列,是因为我们的序列只能是实际的无限长度的随机过程的一段。

c = xcorr(x,y) returns the cross-correlation sequence in a length 2*N-1 vector, where x and y are length N vectors (N>1). If x and y are not the same length, the shorter vector is zero-padded to the length of the longer vector.

c=xcorr(x,y)返回长度为2*N-1的序列,此时要满足x和y都是长度为N的序列。如果两个序列不等长,则较短的序列先补零到和较长序列等长,再做计算。

Note The maximum allowable vector length for inputs to xcorr is 2^20. If you need to process longer sequences, see dfilt.fftfir.

xcorr允许计算序列最长为2^20。若需要计算更长序列的相关,看dfilt.fftfir By default, xcorr computes raw correlations with no normalization. 默认情况下,xcorr 计算得到最基本的相关序列,不标准化。

The output vector c has elements given by

In general, the correlation function requires normalization to produce an accurate estimate (see below).一般而言,相关函数需要将结果标准化,以得到准确的估计。 c = xcorr(x) is the autocorrelation sequence for the vector x. If x is an N-by-P matrix, c is a matrix with 2N-1 rows whose P2 columns contain the cross-correlation sequences for all combinations of the columns of x. For more information on matrix processing with xcorr, see Multiple Channels.

c=xcorr(x)得到序列x的自相关序列。如果x是一个N行P列矩阵,c是一个2N-1行P2列的矩阵,每一行是原来这一行的自相关序列,每一列是???。

c = xcorr(x,y,'option') specifies a normalization option for the

cross-correlation, where 'option' is 给出标准化的互相关运算。(标准化方法就是将最原始的互相关结果除以序列长度!)

? 'biased': Biased estimate of the cross-correlation function 有偏估计。即是默认的互相关运算后再标准化。 注意以下区别:

Fs=1000; %采样率 f = 5;

N = 1; % 周期数 t=N; % 信号时长 s

n=0:1/Fs:t-1/Fs; % 采样时间点,刚好采N个周期

len = length(n); % 信号点数,也是FFT变换点数,即采集多少点就做多少点的FFT

y = sin(2*pi*f*n); % 采集到的离散信号 plot(y)

10.80.60.40.20-0.2-0.4-0.6-0.8-101002003004005006007008009001000

y1 = fliplr(y);

y_corr = conv(y,y1);% 翻转后做卷积,相当于默认的自相关 figure;plot(y_corr)

5004003002001000-100-200-300-400-5000200400600800100012001400160018002000

y_corr1 = xcorr(y,'biased'); % 做标准化的有偏自相关 figure;plot(y_corr1)