xcorr

Cross correlation, computed over a range of lags.

Syntax

Rxy = xcorr(x)

Rxy = xcorr(x,y)

Rxy = xcorr(...,maxlag)

Rxy = xcorr(...,maxlag,scale)

[Rxy,lags] = xcorr(...)

Inputs

x
As a vector, x is the first or only signal.
As a matrix, x is a set of signals stored as column vectors.
Type: double
Dimension: vector | matrix
y
The second signal, for cross-correlation.
Type: double
Dimension: vector
maxlag
The maximum correlation lag. Use [] or omit to default to N-1, where N is the number of rows in a matrix x, or the greater length of vectors x and y. Each vector of correlations has length 2*maxlag+1.
Type: integer
Dimension: scalar
scale
The normalization type.
Type: string
The available options are as follows:
'none'
The unscaled correlation (default).
This is the only option for the corr(x,y,...) case if x and y have different lengths.
'biased'
The biased average, dividing each correlation value by N.
'unbiased'
The unbiased average, dividing each correlation value by the number products in its summation.
'coeff'
Normalizes correlations by RMS values.

Outputs

Rxy
The cross correlations.
Type: vector | matrix
lags
The lag for each correlation.
Type: vector

Examples

Vector example:

x = [2,3,4,5,6];
y = [4,6,7,8];
Rxy = xcorr(x,y)
Rxy = [Matrix] 1 x 8
0.00000  16.00000  38.00000  65.00000  94.00000  119.00000  88.00000  56.00000  24.00000
Matrix example:
z = [1,2;3,4;5,6;7,8];
Rxy = xcorr(z)
Rxy = [Matrix] 7 x 4
 7.00000    8.00000   14.00000   16.00000
26.00000   30.00000   38.00000   44.00000
53.00000   62.00000   68.00000   80.00000
84.00000  100.00000  100.00000  120.00000
53.00000   68.00000   62.00000   80.00000
26.00000   38.00000   30.00000   44.00000
 7.00000   14.00000    8.00000   16.00000

Comments

When x is a vector and y is omitted, the auto-correlation of x is computed.

When x is a matrix with N columns, y must be omitted and Rxy is a matrix with N^2 columns. The correlation of columns i and j of x is stored in column (i-1)*N + j of Rxy.

For the cross-correlation, corr(x,y,...), if the lengths of the vectors are unequal, the shorter vector will be padded, producing additional zeros in the output.