2.11.5 corr1

Menu Information

Analysis: Signal Processing: Correlation

Brief Information

Compute correlation of two signals

Command Line Usage

1. corr1 ix1:=Col(1) ix2:=Col(2);

2. corr1 ix1:=Col(1) ix2:=Col(2) type:=circular;

3. corr1 ix1:=Col(1) ix2:=Col(2) norm:=1;

4. corr1 ix1:=Col(1) ix2:=Col(2) type:=circular norm:=1 oy:=(col(3),col(4));

X-Function Execution Options

Please refer to the page for additional option switches when accessing the x-function from script

Variables

Display
Name
Variable
Name
I/O
and
Type
Default
Value
Description
Input ix1

Input

vector

<active>

Specifies the first input signal.

Input ix2

Input

vector

<active>

Specifies the second input signal. If you would like to calculate auto-correlation, this should be the same as Input Signal 1.

Sampling Interval interval

Input

double

1.0

Specifies the sampling interval. The default is <auto>, which corresponds to an automatically-computed interval.

Type type

Input

int

line

Specifies whether to compute a linear correlation or a circular correlation.

Option list

  • linear :Linear
    This is suitable for signals whose data points outside the input range can be viewed as zeros.
  • circular:Circular
    This is best suited for signals that repeat periodically.
Normalize norm

Input

int

0

Specifies whether the result should be normalized

Output oy

Output

XYRange

<new>

Specifies the output range

See the syntax here.


Examples

  • To compute the auto-correlation of signals in Column 1 of the active worksheet, use the script command:

corr1 ix1:=col(1) ix2:=col(1)

  • To change the method of correlation, open the dialog from the Origin menu, Analysis: Signal Processing: FFT: Correlation. In the dialog, select the options and click OK.
  • To perform correlation to data using a pre-saved smoothing theme file, save your preferences in the corr1 dialog, and then execute it by typing the following script command, using your own saved-theme title:

corr1 -t "my correlation theme.oth"

  • Code Sample
// Use correlation to detect time delay between two signals
//Create a  workbook and import the sample data
newbook sheet:=0 name:=Correlation;

newsheet xy:="YYYXY" labels:="Signal 1|Signal 2|Shifted Signal 2";

fname$ = System.path.program$ +"Samples\Signal Processing\Correlation.dat";

impasc;

string bkname$ = %H; // save the book name as plotting will create new window to change %H

//Calcualte correlation
corr1 ix1:=1 ix2:=2 type:=line oy:=(4,5);

//Get the maximum correlation and calculate the time difference
stats ix:=5 max:=maxcorr;
shift=col(4)[list(maxcorr, col(5))] + 1;
//Shift Signal 2 and plot
copydata irng:=col(2) orng:=col(3)[shift];
%a=nameof(col(3))$;
plotxy iy:=1 plot:=200 ogl:=Layer1;
plotxy iy:=[bkname$]1!col(3) plot:=200 ogl:=Layer1;
set %a -c 3;

More Information

For more information, please refer to our User Guide.


Related X-Functions

fft1, ifft1


Keywords:linear, circular