Version:

Last Modified: March 15, 2017

Computes the singular value decomposition (SVD) of an *m* x *n* matrix.

An *m* x *n* matrix with *m* rows and *n* columns.

This input accepts a 2D array of double-precision, floating point numbers or 2D array of complex double-precision, floating point numbers.

**Default: **Empty array

A value specifying how this node performs the decomposition.

Name | Value | Description |
---|---|---|

Thin | 0 | Decomposes an m x n matrix as the multiplication of matrix U (m x min(m,n)), S (min(m,n) x min(m,n)), and conjugated transpose of V (n x min(m,n)). |

Full | 1 | Decomposes an m x n matrix as the multiplication of matrix U (m x m), S (m x n), and conjugated transpose of V (n x n). |

**Default: **Thin

Error conditions that occur before this node runs.

The node responds to this input according to standard error behavior.

Standard Error Behavior

Many nodes provide an **error in** input and an **error out** output so that the node can respond to and communicate errors that occur while code is running. The value of **error in** specifies whether an error occurred before the node runs. Most nodes respond to values of **error in** in a standard, predictable way.

**Default: **No error

The *U* matrix of the SVD results.

The columns of this output compose an orthogonal set.

The *S* matrix of the SVD results.

This output is a diagonal matrix whose diagonal elements are the singular values of the input matrix in descending order. These values also compose singular values this node computes.

The *V* matrix of the SVD results.

The columns of this output compose an orthogonal set.

The singular values of the input matrix in descending order.

The values in this output are the diagonal elements of the *S* matrix.

Error information.

The node produces this output according to standard error behavior.

Standard Error Behavior

**error in** input and an **error out** output so that the node can respond to and communicate errors that occur while code is running. The value of **error in** specifies whether an error occurred before the node runs. Most nodes respond to values of **error in** in a standard, predictable way.

The following equation defines the singular value decomposition of matrix *A* for real cases:

*A* = *U**S**V*^{T}

The following equation defines the singular value decomposition of matrix *A* for complex cases:

*A* = *U**S**V*^{H}

In the previous two equations, the columns in *U* and *V* are orthogonal, and *S* is a diagonal matrix whose diagonal elements are the singular values of *A* in descending order.

Because the singular values of matrix *A* are the nonnegative square roots of the eigenvalues of *A*^{H}*A*, they all are nonnegative. The diagonal matrix *S* is unique for a given matrix.

If *r* represents the rank of *A*, the number of nonzero singular values of *A* is *r*, the first *r* columns in *U* are the normal orthogonal bases of the column space of *A*, and the first *r* columns in *V* are the normal orthogonal bases of the row space of *A*.

You can use SVD decomposition to solve linear algebra problems, such as the pseudoinverse of a matrix, total least-squares minimization, and matrix approximation. SVD factorization also is useful in image processing applications, such as image compression.

**Where This Node Can Run: **

Desktop OS: Windows

FPGA: This product does not support FPGA devices