MATLAB documentation of SVD states that the diagonal matrix returned has singular values in decreasing order. Is there a way to find out what the natural ordering of singular values would be? The reason I ask is because the singular values correspond to dimensions associated with rows of the input matrix.
2 Answers
No, the very definition of SVD does not introduce an ordering. Restricting the discussion to square X
matrices and adopting the same notation of the cited matlab documentation, if X = U*S*V'
is a SVD of X
, then for every permutation matrix P
, we can form a valid SVD as X = (U*P)*(P'*S*P)*(V*P)'
. Presenting matrix S
with descending values is just a matter of convenience: every permutation P'*S*P
would do the same job.
As a side note: P*X = P*U*S*V'
showing that a row permutation of matrix X
does not change the singular values S
, which can be considered independent from any row (or column) permutation of X
.
I was hoping to get some idea of what is being asked here before responding. For example, the eigenshuffle tool I've posted on the file exchange allows you to reorder the eigenvalues and eigenvectors of a sequence of eigen-problems, so they are maximally consistent with each other in sequence. Perhaps your problem is similar, thus you might think of the singular values as functions that vary along with some parameter that drives a system.
But really, there is no natural ordering of the singular values that comes from the method used to compute the SVD. In fact, the only ordering that makes sense is the one that comes out - decreasing order. The order of the singular values is not dependent on the sequence of the rows of your matrix, as the question seems to vaguely imply, so I'm not sure what is meant there.
Feel free to modify the question in case you can make your needs clearer.