Cross correlating matrix for each column

2 views (last 30 days)
La Ode Marzujriban
La Ode Marzujriban on 21 Jan 2015
Edited: dpb on 22 Jan 2015
Hy all, i am a beginer in matlab. I have some problem with cross corelating two matricces, because i have large number of data, i have made a loop model like this:
Load a.dat
Load b.dat
X1=a(:,m)
X2=b(:,m)
For m=1:2;
X=xcorr(x1,x2)
End
Plot(x)
But the answer is undefined variable "m". a & b is a 34x34 matrix,
  2 Comments
Ced
Ced on 21 Jan 2015
Hi
When you include code in your answer, try to use the "code" block (button at the top), it makes it more readable.
So, just repeating your code with some line numbers:
1 Load a.dat
2 Load b.dat
3 X1=a(:,m)
4 X2=b(:,m)
5 for m=1:2;
6 X=xcorr(x1,x2)
7 End Plot(x)
In lines 3 and 4, you are calling a(:,m) and b(:,m), but m is only defined in line 5. See the problem? You need to define m before you use it. Also, be aware that matlab is case-sensitive!
What are you trying to plot? The crosscorrelation of each column of a with each column of b? That's going to be a huge number of lines...
La Ode Marzujriban
La Ode Marzujriban on 22 Jan 2015
Thank you for your answer mr.ced I have recode these into: load a.dat load b.dat m = 1:34 x1 = a(:,m) X2 = b(:,m) For m=1:34 x = xxorr(x1,x2) End
Ya i want to plot each result when x is a distance, y is a time and the amplitde as the result of cross corelation of each column

Sign in to comment.

Answers (1)

dpb
dpb on 21 Jan 2015
Edited: dpb on 22 Jan 2015
help xcorr
...
xcorr(A), when A is an M-by-N matrix, is a large matrix with
2*M-1 rows whose N^2 columns contain the cross-correlation
sequences for all combinations of the columns of A.
...
So,
X=xcorr([a b]);
but, as ced notes,
size(X) = [2*68-1,34^2]
= [135,1156]
ADDENDUM
Yeah, sorry, I wasn't thinking about it producing the self correlation vectors, too...
[M,N]=size(x,2);
X=zeros(2*M-1,N*N);
k=0;
for i=1:N
for j=1:N
k=k+1;
X(:,k)=xcorr(x(:,i),y(:,j));
end
end
  2 Comments
Ced
Ced on 21 Jan 2015
Yep. That's a bit of an overestimate however, since with xcorr([a b]) you are computing the autocorrelations of A and B too and each crosscorrelation twice.
La Ode Marzujriban
La Ode Marzujriban on 22 Jan 2015
Yes its look over, i need just the result of each column, do you have any idea? Because i have try like my mention in mr.ced answer but the result is (x2 must be a vector (min(size(b))==1)

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!