# The meaning of Cross and Auto Correlation Matrices

I have to make some system where I have an input signal (i) and and feedback signal (f) and from this I create a autocorrelation Matrix (ACM) where ACM = i*i and cross-correlation vector (XCV) where XCV= f*i.

From this I get a set of linear equations ACM*x= XCV and I need to find x.

With the x I can update some filter taps and ensure the signal is manipulated enough to ensure it is not distorted too much, hence that x is used to pre-distort the signal.

I understand how it works but not why.

Does anyone have any information on how using the matrices like this we get meaningful coefficients, what exactly do those coefficients represent?

What is the purpose of autocorrelation and cross-correlation. Basic questions, just starting some stuff with DSP.

• To understand "how" something works is great. I'm not really sure what you mean by "why" – Andy aka Jun 25 '14 at 11:43
• I mean I understand the equation Ax=b but not why that gives the coefficients to use a filter to pre-distort a signal. – user1876942 Jun 25 '14 at 12:42

The cross-correlation between i and f is maximum when f has the same shape than i but can be shifted in time.

I believe that this is what you want here: You want your feedback f to look like your input signal i but since it has propagated in your circuit it can be shifted in time.

So when you are trying to adjust the shape of f to the one of i i.e. i(t) ~ f(t-T), basically what you want is to adjust f such as i*i ~i*f.

• I have done another algorithm, that finds the delay between f and i and shifts i so that when I make the XCV, it should be meaningful. The problem I cannot understand is why x can be used as a filter tap. Why does this work :) – user1876942 Jun 26 '14 at 5:46

What you have there comes from the "Normal Equations" solving for the optimal weights of a linear regression model. In Machine Learning and statistics this type of model is known as Linear Regression, i.e. fitting a curve to a dataset. In Signal Processing it's called a Linear Least-Squares Filter and forms the basis of common adaptive filters such as Recursive Least Squares and Kalman.

Basically: given a model (keeping to your terms) f=x'i where f is the output vector, x is the vector of filter coefficients and i is the input vector; then defining an error equation between x'i (the model output) and f (the actual output), differentiating to minimise this "cost function" and setting to zero and solving for x yields: x = inv(i'i)*if (where inv() is the inverse and i' is transpose because I don't know how to make the equations look fancy).

So in summary, multiplying the inverse of the autocorrelation matrix by the cross correlation vector gives you the optimal tap weights by virtue of solving the Normal Equations.

• OK thanks, I will Google "Linear Least-Squares Filter". Do you have any other related material I could Google? In the end I did this using Cholesky. It works, just need to dig deeper to fully understand its meaning. – user1876942 Jun 26 '14 at 12:51
• @user1876942 Here's a good link: cs.cornell.edu/~bindel/class/cs3220-s12/notes/lec10.pdf – akellyirl Jun 26 '14 at 13:10