2.74 Find the cross correlation between two sequences
Problem: Given
\begin{align*} A & =[0,0,2,-1,3,7,1,2,-3,0,0]\\ B & =[0,0,1,-1,2,-2,4,1,-2,5,0,0] \end{align*}
Notice that the output sequence generated by Mathematica and Matlab are reversed with respect
to each others.
Also, MATLAB uses the length \(2N-1\) as the length of cross correlation sequence, which in this example
is 23 because \(N\) is taken as the length of the larger of the 2 sequences if they are not of equal length
which is the case in this example.
In Mathematica, the length of the cross correlation sequence was 22, which is \(2N\).
| Mathematica
Clear["Global`*"];
a={0,0,2,-1,3,7,1,2,-3,0,0};
b={0,0,1,-1,2,-2,4,1,-2,5,0,0};
c=Reverse[ListCorrelate[a,b,{-1,1},0]]
|
Out[31]= {0,
0,
0,
0,
10,
-9,
19,
36,
-14,
33,
0,
7,
13,
-18,
16,
-7,
5,
-3,
0,
0,
0,
0}
|
| Matlab
In MATLAB use the xcross in the signal processing
toolbox
clear all; close all;
A=[0,0,2,-1,3,7,1,2,-3,0,0];
B=[0,0,1,-1,2,-2,4,1,-2,5,0,0];
C=xcorr(A,B);
format long
C'
|
ans =
0.000000000000003
0.000000000000002
-0.000000000000002
0
9.999999999999998
-9.000000000000002
19.000000000000000
36.000000000000000
-14.000000000000000
33.000000000000000
-0.000000000000002
6.999999999999998
13.000000000000000
-18.000000000000000
16.000000000000004
-7.000000000000000
4.999999999999999
-2.999999999999998
-0.000000000000000
0.000000000000001
0.000000000000002
-0.000000000000004
0
|
Maple
a:=Array([0,0,2,-1,3,7,1,2,-3,0,0]);
b:=Array([0,0,1,-1,2,-2,4,1,-2,5,0,0]);
SignalProcessing:-CrossCorrelation(a,b);
\[ [ 7.0, 0.0, 33.0,- 14.0, 36.0, 19.0,- 9.0, 10.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] \]
Not able to find out now why Maple result is different. May be definition used is different, no time
now to find out.