Need matrix inverse for IAA estimation

1 visualización (últimos 30 días)
Joseph
Joseph el 26 de Mzo. de 2013
Hi there,
I know that it is usually not correct to take the inverse of a matrix (\ is much better) but I DO NOT have the usual equation Ax = B. Instead I have a matrix R, and I need
alpha(i,j) = (y(i,j)'*R^-1*d) / (y(i,j)'*R^-1*y(i,j))
y(i,j) is 192*1, R is 192*192, d is 192*1, alpha(i,i) is 1*1
where R = sumi(sumj(|alpha(i,j)|^2*(y(i,j)*Y(i,j)'))) -> this matrix is 192*192
This is iterative for IAA estimation. (find alpha, find R, find alpha, etc...)
Is there a good way to get R^-1 or alpha directly from R? inv just gives me garbage, since it is returning nearly singular matrices, and pinv gives me something that seems close to correct, but the amplitude of alpha is bonkers.
By the way, R is Toeplitz, positive-semidefinite.
Thanks

Respuestas (1)

Matt J
Matt J el 26 de Mzo. de 2013
Editada: Matt J el 29 de Mzo. de 2013
Presumably, R is supposed to be initialized at something distinctly non-singular. Or else alpha_ij are supposed to induce non-singularity. Are the y_ij all linearly independent? The Y_ij as well? If so, you should be initializing all the alpha_ij strictly non-zero. If not, I suspect you have bad input data.
  4 comentarios
Joseph
Joseph el 1 de Abr. de 2013
The definition of the first alpha is alpha_ij = y_ij'*d/(y_ij'*y_ij) Afterward, R and alpha are calculated using the formula in the first post. The backslash method gives the same solution as using pinv of R, but takes MUCH longer, since pinv (R) only needs to be calculated once for all i,j, but the backslash needs to be calculated every time.
Matt J
Matt J el 1 de Abr. de 2013
Editada: Matt J el 1 de Abr. de 2013
No, the faster thing (than PINV) would be to concatenate all the y_ij into one matrix Ymat, with each y_ij forming one column. Then you would do
Q=R\Ymat
Each column of Q would be R\y_ij.
For that matter, you also shouldn't be calculating all the quadratic forms y_ij*R^-1*y_ij individually for each ij. Instead, you should be doing
quadforms = sum((R\Ymat).*Ymat,1);
This will give you all the quadratic forms at once.
The definition of the first alpha is alpha_ij = y_ij'*d/(y_ij'*y_ij)
Hopefully, you understand now why that may or may not work.

Iniciar sesión para comentar.

Categorías

Más información sobre Linear Least Squares en Help Center y File Exchange.

Etiquetas

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by