From 6:00 PM CST Friday, Feb 15th - 2:00 AM CST Sunday, Feb 17th, ni.com will be undergoing system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

From 6:00 PM CST Friday, Feb 15th - 2:00 AM CST Sunday, Feb 17th, ni.com will be undergoing system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

Last Modified: January 12, 2018

Computes the two-dimensional cross correlation of two sequences.

The first input sequence.

This input can be a 2D array of double-precision, floating-point numbers or a 2D array of complex double-precision, floating-point numbers.

The second input sequence.

This input can be a 2D array of double-precision, floating-point numbers or a 2D array of complex double-precision, floating-point numbers.

The correlation method to use.

This input is available only if both **x** and **y** are arrays or waveforms.

If **x** and **y** are small, the direct method typically is faster. If **x** and **y** are large, the frequency domain method typically is faster. Additionally, slight numerical differences can exist between the two methods.

Name | Description |
---|---|

direct | Computes the cross correlation using the direct method of linear correlation. |

frequency domain | Computes the cross correlation using an FFT-based technique. |

**Default: **frequency domain

Error conditions that occur before this node runs.

The node responds to this input according to standard error behavior.

Standard Error Behavior

Many nodes provide an **error in** input and an **error out** output so that the node can respond to and communicate errors that occur while code is running. The value of **error in** specifies whether an error occurred before the node runs. Most nodes respond to values of **error in** in a standard, predictable way.

**Default: **No error

The cross correlation of the two input sequences.

The output can return a 2D array of double-precision, floating-point numbers or a 2D array of complex double-precision, floating-point numbers.

Error information.

The node produces this output according to standard error behavior.

Standard Error Behavior

**error in** input and an **error out** output so that the node can respond to and communicate errors that occur while code is running. The value of **error in** specifies whether an error occurred before the node runs. Most nodes respond to values of **error in** in a standard, predictable way.

This node computes two-dimensional cross correlation as follows:

$h(i,j)=\underset{m=0}{\overset{{M}_{1}-1}{\sum}}\underset{n=0}{\overset{{N}_{1}-1}{\sum}}{x}^{*}(m,n)\cdot y(m-i,n-j)$

for *i* = -(*M*_{1}-1), ..., -1, 0, 1, ... , (*M*_{2}-1) and *j* = -(*N*_{1}-1), ..., -1, 0, 1, ... , (*N*_{2}-1)

where

*M*_{1}is the number of rows of matrix**X***N*_{1}is the number of columns of matrix**X***M*_{2}is the number of rows of matrix**Y***N*_{2}is the number of columns of matrix**Y**

The indexed elements outside the ranges of **X** and **Y** are equal to zero, as shown in the following relationships:

$x(m,n)=0,\text{\hspace{0.17em}}m<0\text{\hspace{0.17em}}\mathrm{or}\text{\hspace{0.17em}}m\ge {M}_{1}\text{\hspace{0.17em}}\mathrm{or}\text{\hspace{0.17em}}n<0\text{\hspace{0.17em}}\mathrm{or}\text{\hspace{0.17em}}n\ge {N}_{1}$

and

$y(m,n)=0,\text{\hspace{0.17em}}m<0\text{\hspace{0.17em}}\mathrm{or}\text{\hspace{0.17em}}m\ge {M}_{2}\text{\hspace{0.17em}}\mathrm{or}\text{\hspace{0.17em}}n<0\text{\hspace{0.17em}}\mathrm{or}\text{\hspace{0.17em}}n\ge {N}_{2}$

The elements of the output matrix **RXY** are related to the elements in *h* as follows:

${R}_{xy}(i,j)=h(i-({M}_{1}-1),j-({N}_{1}-1))\text{\hspace{0.17em}}\text{\hspace{0.17em}}\mathrm{for}\text{\hspace{0.17em}}i=0,\text{\hspace{0.17em}}1,\text{\hspace{0.17em}}2,\text{\hspace{0.17em}}\mathrm{...},\text{\hspace{0.17em}}{M}_{1}+{M}_{2}-2\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\mathrm{and}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}j=0,\text{\hspace{0.17em}}1,\text{\hspace{0.17em}}2,\text{\hspace{0.17em}}\mathrm{...},\text{\hspace{0.17em}}{N}_{1}+{N}_{2}-2$

**Where This Node Can Run: **

Desktop OS: Windows

FPGA: Not supported

Web Server: Not supported in VIs that run in a web application