I'm trying to copmute the autocorrelation matrix of array outputs and suspect i may be doing something wrong. I'm confident that i'm getting the right result for vectors but when my signal is a matrix it all goes wrong. Looking at the examples below can anyone say if they are correct? e.g. If X=[1 2 3] autocorrelation matrix = [14 8 3 8 13 6 3 6 9] if X = [ 1 2 3 4 5 6 7 8 9] autocorrelation matrix = [ 285 154 50 154 271 122 50 122 194] Cheers!
autocorrelation matrix
Started by ●March 13, 2007
Reply by ●March 13, 20072007-03-13
On 13 Mar, 17:33, "matque" <michelle.mcgu...@eee.strath.ac.uk> wrote:> I'm trying to copmute the autocorrelation matrix of array outputs and > suspect i may be doing something wrong. I'm confident that i'm getting the > right result for vectors but when my signal is a matrix it all goes wrong. > Looking at the examples below can anyone say if they are correct? > > e.g. If X=[1 2 3] > > autocorrelation matrix = [14 8 3 > 8 13 6 > 3 6 9]How did you get that result? It is impossible to answer your question based on numbers alone, you need to tell us how you computed that matrix. Rune
Reply by ●March 13, 20072007-03-13
I'm trying to compute: [x(0)x'(0) x(0)x'(1) x(0)x'(2) x(1)x'(0) x(1)x'(1) x(1)x'(2) x(2)x'(0) x(2)x'(1) x(2)x'(2)] where, ' implies a transpose of a conjugate and 0,1 and 2 represent a lag. My understanding of the autocorrelation when dealing with one sequence in time is ok (i think). When I'm dealing with more than one sequence (sensor output) i lose sight of why i'm calculating it the way i am. Perhaps my starting point above is wrong? The code is: %---------------- x= [ 1 2 3;4 5 6;7 8 9] [M,N]=size(x); %N is the number of sensors (rows) and M is the number of samples (columns) for i=1:N X(:,i)=[ x(:,i)' zeros(1,M-1)]; end X=(X(:))'; X1=zeros(M,N*M); for i=1:M for Z=1:N z=Z-1; X1(i,(M*(Z-1)+1:M*Z))=X(:,(i+z*(2*M-1)):(i+M-1+z*(2*M-1))); end end Rxx=X1*conj(X1') %---------------------------