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.

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.

 Fixed-Point Properties

Methods

cloneCreate cross-correlator object with same property values
getNumInputsNumber of expected inputs to step method
getNumOutputsNumber of outputs of step method
isLockedLocked status for input attributes and nontunable properties
releaseAllow property value and input characteristics changes
stepCross-correlation sequence

Definitions

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

rxy(h)={n=0Nh1x(n+h)y*(n)0hN1ryx*(h)(N1)h0

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:

ρxy(h)=E{x(n+h)y*(n)}

where E{ } is the expectation operator.

Examples

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.

Algorithms

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?