singular Value Decomposition(SVD)
For a more in depth reference see: SVD
Any matrix [math]\displaystyle{ \ X }[/math] can be decomposed into three matrices:
[math]\displaystyle{ \ {X}_{d \times n} = {U}_{d \times d}{S}_{d \times d}{V^T}_{d \times n} }[/math]
Where [math]\displaystyle{ \ S }[/math] is a diagonal matrix and thus, has the following property:
[math]\displaystyle{ \ S^T = S }[/math]
And [math]\displaystyle{ \ U }[/math] and [math]\displaystyle{ \ V }[/math] are both orthonormal matrices and thus, have the following properties:
[math]\displaystyle{ \ U^TU=I }[/math]
[math]\displaystyle{ \ U^T=U^{-1} }[/math]
[math]\displaystyle{ \ V^TV=I }[/math]
[math]\displaystyle{ \ V^T=V^{-1} }[/math]
The [math]\displaystyle{ \ S, U }[/math] and [math]\displaystyle{ \ V }[/math] matrices are constructed in the following manner:
[math]\displaystyle{ \ S = }[/math] eigenvalues of [math]\displaystyle{ \ X^TX }[/math] = eigenvalues of [math]\displaystyle{ \ XX^T }[/math]
[math]\displaystyle{ \ U }[/math] represents the left singular vectors of [math]\displaystyle{ \ X }[/math]
[math]\displaystyle{ \ V }[/math] represents the right singular vectors of [math]\displaystyle{ \ X }[/math]
[math]\displaystyle{ \ U = }[/math] eigenvectors of [math]\displaystyle{ \ X X^T }[/math]
[math]\displaystyle{ \ V = }[/math] eigenvectors of [math]\displaystyle{ \ X^T X }[/math]
In MATLAB execute:
[USV] = svd(X)