## Documentation Center |

The `Crosscorrelator` returns the cross-correlation
sequence for two discrete-time deterministic inputs. This object can
also return the cross-correlation sequence estimate for two discrete-time,
jointly wide-sense stationary (WSS), random processes.

To obtain the cross-correlation for two discrete-time deterministic inputs:

Define and set up your cross-correlator. See Construction.

Call

`step`to compute the cross-correlation according to the properties of`dsp.Crosscorrelator`. The behavior of`step`is specific to each object in the toolbox.

`H = dsp.Crosscorrelator` returns
a cross-correlator object, `H`, that computes the cross-correlation
of two inputs. For N-D arrays, the cross-correlator computes the correlation
column-wise. The inputs must have an equal number of columns. If one
input is a vector and the other is an N-D array, the cross-correlator
computes the cross-correlation of the vector with each column of the
N-D array. Cross correlating inputs of length *N* and *M* results
in a cross-correlation sequence of length *N*+*M*–1.
Cross correlating matrices of size *M*-by-*N* and *P*-by-*N* results
in a matrix of cross-correlation sequences of size *M*+*P*–1-by-*N*.

`H = dsp.Crosscorrelator('PropertyName',PropertyValue,
...)` returns a cross-correlator,

clone | Create cross-correlator object with same property values |

getNumInputs | Number of expected inputs to step method |

getNumOutputs | Number of outputs of step method |

isLocked | Locked status for input attributes and nontunable properties |

release | Allow property value and input characteristics changes |

step | Cross-correlation sequence |

The cross-correlation of two length *N* deterministic
inputs, or realizations of jointly WSS random processes, *x* and *y*,
is:

where *h* is
the lag and *** denotes the complex conjugate. If
the inputs are realizations of jointly WSS stationary random processes, r_{xy}(h) is
an unnormalized estimate of the theoretical cross-correlation:

where E{ } is the expectation operator.

Compute correlation between two signals:

hcorr = dsp.Crosscorrelator; t=[0:0.001:1]; x1=sin(2*pi*2*t)+0.05*sin(2*pi*50*t); x2=sin(2*pi*2*t); y=step(hcorr,x1,x2); %computes cross-correlation of x1 and x2 figure,plot(t,x1,'b',t, x2, 'g'); legend('Input signal 1',' Input signal 2') figure, plot(y); title('Correlated output')

Use cross-correlation to detect delay in jointly stationary white Gaussian noise inputs:

S = rng('default'); % white Gaussian noise input x = randn(100,1); % Create copy delayed by 10 samples % x1[n]=x[n-10] Hdelay = dsp.Delay(10); x1= step(Hdelay,x); Hxcorr = dsp.Crosscorrelator; y = step(Hxcorr,x1,x); lags = 0:99; %Positive lags stem(lags,y(100:end),'markerfacecolor',[0 0 1]); axis([0 99 -125 125]); xlabel('Lags'); title('Cross-Correlation of Input Noise and Delayed Version');

The theoretical cross-correlation sequence is identically zero except at lag 10. Note this is not true in the sample cross-correlation sequence, but the estimate demonstrates a peak at the correct lag.

This object implements the algorithm, inputs, and outputs described on the Correlation block reference page. The object properties correspond to the block parameters.

Was this topic helpful?