How to invert fast a big pseudo-inverse matrix
3 views (last 30 days)
Show older comments
Hello everybody I have to invert a big (m,n) matrix using a pseudo inverse. The pinv() function doesnt work because the matrix is to big. I program a image reconstruction and have to solve the equation A*x = b, where x,b are vectors and A is my matrix. To get x is need to invert my matrix. For the pseudo inverse I use the Tikhonov regularization, because it gets the best images. Maybe you can tell me if there is a faster way to invert my matrix. Now it is very time consuming and I dont know how to make it faster. The Tikhonov regularization works as follows: (A'*A + T'*T)^(-1)*A'. T is defined as lambda*(identity matrix) My code is
if true
lambda = 250;
tikhonovMatrix = lambda*speye(numTrans*numWinkel, numPixZ*numPixX);
tikhonovMatrixTrans = tikhonovMatrix';
tikhonovMatrixProd = tikhonovMatrixTrans*tikhonovMatrix;
yT2Trans = yT2';
yT2Prod = yT2Trans*yT2;
pseudoInverse_yT2 = yT2Prod + tikhonovMatrixProd;
bildVektor = reshape(newsinogram,[],1);
recBildVektor = yT2Trans*bildVektor;
recBildVektor2 = pseudoInverse_yT2\recBildVektor;
end
0 Comments
Answers (0)
See Also
Categories
Find more on Operating on Diagonal Matrices in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!