Need matrix inverse for IAA estimation
1 view (last 30 days)
Show older comments
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
0 Comments
Answers (1)
Matt J
on 26 Mar 2013
Edited: Matt J
on 29 Mar 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 Comments
Matt J
on 1 Apr 2013
Edited: Matt J
on 1 Apr 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.
See Also
Categories
Find more on Linear Least Squares in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!