SVDのMATLABドキュメントには、返される対角行列の値が降順で特異値であると記載されています。特異値の自然な順序がどうなるかを知る方法はありますか?私が尋ねる理由は、特異値が入力行列の行に関連付けられた次元に対応しているためです。
2 に答える
いいえ、SVD の定義自体は順序付けを導入していません。議論を正方X
行列に限定し、引用されたmatlab ドキュメントX = U*S*V'
の同じ表記法を採用すると、が の SVD である場合X
、すべての順列行列 P
について、有効な SVD を として形成できますX = (U*P)*(P'*S*P)*(V*P)'
。降順の値で行列S
を提示するのは、便宜上の問題です。すべての順列P'*S*P
は同じ仕事をします。
補足として、P*X = P*U*S*V'
行列の行順列が特異値 を変更X
しないS
ことを示します。これは、の行 (または列) 順列から独立していると見なすことができますX
。
回答する前に、ここで何を尋ねられているかを理解したいと思っていました。たとえば、私がファイル交換に投稿したeigenshuffleツールを使用すると、一連の固有問題の固有値と固有ベクトルを並べ替えて、それらが順番に互いに最大限に一致するようにすることができます。おそらくあなたの問題は似ているので、特異値は、システムを駆動するいくつかのパラメーターとともに変化する関数と考えることができます。
しかし実際には、SVD の計算に使用される方法から得られる特異値の自然な順序付けはありません。実際、理にかなっている唯一の順序付けは、降順です。質問が漠然と暗示しているように見えるため、特異値の順序は行列の行の順序に依存しないため、そこで何を意味するのかわかりません。
ニーズをより明確にすることができる場合は、質問を自由に変更してください。