MatrixInverse
MatrixInverse [[/D]/P][/G][/O] srcWave
The MatrixInverse operation calculates the inverse or the pseudo-inverse of a matrix. srcWave may be real or complex..
MatrixInverse saves the result in the wave M_Inverse in the current data folder.
Flags
| /D | Creates the wave W_W that contains eigenvalues of the singular value decomposition (SVD) for the pseudo-inverse calculation. If one or more of the eigenvalues are small, the matrix may be close to singular. | |
| /DEST=invWave | Specify the destination of the resulting inverse matrix. If you don't use this flag, the operation saves the inverse in the wave M_Inverse in the current data folder. | |
| The /DEST flag was added in Igor Pro 10.00. | ||
| /DSTW=wWave | Specify the destination of the SVD eigenvalues wave. If you don't use this flag, the operation saves the eigenvalues in the wave W_W in the current data folder. | |
| The /DSTW flag was added in Igor Pro 10.00. | ||
| /FREE | Creates all specified destination waves as free waves. This flag does not affect output waves that are created by default without a user-specified destination. | |
| /FREE is allowed only in functions and only if the destination, as specified by /DEST or /DSTW, is a simple name or wave reference structure field. | ||
| See Free Waves for more discussion. | ||
| The /FREE flag was added in Igor Pro 10.00. | ||
| /G | Calculates only the direct inverse; does not affect calculation of pseudo-inverse. By default, it calculates the inverse of the matrix using LU decomposition. The inverse is calculated using Gauss-Jordan method. The only advantage in using the Gauss-Jordan method is that it is more likely to flag singular matrices than the LU method. | |
| /O | Overwrites the source with the result. | |
| /P | Calculates the pseudo-inverse of a matrix using the SVD algorithm. The calculated pseudo-inverse is a unique minimal solution to the problem: | |
Example
Make/O/N=(2,2) mat0 = {{2,3},{1,7}}
MatrixInverse mat0 // Creates wave M_inverse
MatrixOp/O/T=1 mat1 = M_inverse x mat0 // Check result
Make/O/D/N=(4,6) mat1 = enoise(4)
MatrixInverse/P mat1
MatrixOP/O/T=1 aa = mat1 x M_Inverse
MatrixOP/O/P=1 avgAbsErr = sum(abs(mat1 x M_Inverse - identity(4)))/12
See Also
The MatrixOp operation for more efficient matrix operations.
Matrix Math Operations for more about Igor's matrix routines.
References
Golub, G.H., and C.F. Van Loan, Matrix Computations, 2nd ed., Johns Hopkins University Press, 1986. See sec. 5.5.4.