# pinv

Moore-Penrose pseudoinverse

## Description

`B = pinv(`

returns the Moore-Penrose
pseudoinverse of matrix `A`

)`A`

.

## Examples

## Input Arguments

## More About

## Tips

You can replace most uses of

`pinv`

applied to a vector`b`

, as in`pinv(A)*b`

, with`lsqminnorm(A,b)`

to get the minimum-norm least-squares solution of a system of linear equations. For example, in Solve System of Linear Equations Using Pseudoinverse,`lsqminnorm`

produces the same solution as`pinv`

does.`lsqminnorm`

is generally more efficient than`pinv`

because`lsqminnorm`

uses the complete orthogonal decomposition of`A`

to find its low-rank approximation and applies its factors to`b`

. In contrast,`pinv`

uses singular value decomposition to explicitly form the pseudoinverse of`A`

that you then must multiply by`b`

.`lsqminnorm`

also supports sparse matrices.

## Algorithms

`pinv`

uses singular value decomposition to form the pseudoinverse
of `A`

. Singular values along the diagonal of `S`

that
are less than or equal to `tol`

are treated as zeros, and the
representation of `A`

becomes:

$$\begin{array}{l}A=US{V}^{*}=\left[{U}_{1}\text{\hspace{0.17em}}\text{\hspace{0.17em}}{U}_{2}\right]\left[\begin{array}{cc}{S}_{1}& 0\\ 0& 0\end{array}\right]{\left[{V}_{1}\text{\hspace{0.17em}}\text{\hspace{0.17em}}{V}_{2}\right]}^{*}\\ A={U}_{1}{S}_{1}{V}_{1}^{*}\text{\hspace{0.17em}}.\end{array}$$

The pseudoinverse of `A`

is then equal to:

$$B={V}_{1}{S}_{1}^{-1}{U}_{1}^{*}\text{\hspace{0.17em}}.$$

## Extended Capabilities

## Version History

**Introduced before R2006a**

## See Also

`inv`

| `qr`

| `rank`

| `svd`

| `lsqminnorm`

| `decomposition`