# Documentation

### This is machine translation

Translated by
Mouseover text to see original. Click the button below to return to the English verison of the page.

# dsp.Crosscorrelator System object

Package: dsp

Cross-correlation of two inputs

## Description

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:

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

2. 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.

 Note:   Starting in R2016b, instead of using the `step` method to perform the operation defined by the System object™, you can call the object with arguments, as if it were a function. For example, ```y = step(obj,x)``` and `y = obj(x)` perform equivalent operations.

## Construction

`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, `H`, with each property set to the specified value.

## Properties

 `Method` Domain for computing correlations Specify the domain for computing correlation as `Time Domain`, ```Frequency Domain```, or `Fastest`. Computing correlations in the time domain minimizes memory use. Computing correlations in the frequency domain may require fewer computations than computing in the time domain depending on the input length. If the value of this property is `Fastest`, the cross-correlator operates in the domain which minimizes the number of computations. The default is `Time Domain`.

## Methods

 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

## Definitions

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

`$\begin{array}{l}{r}_{xy}\left(h\right)=\left\{\begin{array}{ll}\sum _{n=0}^{N-h-1}x\left(n+h\right){y}^{*}\left(n\right)\hfill & 0\le h\le N-1\hfill \\ {r}_{yx}^{*}\left(h\right)\hfill & -\left(N-1\right)\le h\le 0\hfill \end{array}\\ \end{array}$`

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

`${\rho }_{xy}\left(h\right)=E\left\{x\left(n+h\right){y}^{*}\left(n\right)\right\}$`

where E{ } is the expectation operator.

## Examples

expand all

Note: This example runs only in R2016b or later. If you are using an earlier release, replace each call to the function with the equivalent `step` syntax. For example, myObject(x) becomes step(myObject,x).

```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 = 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') ```

Note: This example runs only in R2016b or later. If you are using an earlier release, replace each call to the function with the equivalent `step` syntax. For example, myObject(x) becomes step(myObject,x).

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 = Hdelay(x); Hxcorr = dsp.Crosscorrelator; y = 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.

## Algorithms

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