MATLAB SVD奇异值排序

时间:2012-08-12 07:12:53

标签: matlab svd

MATLAB documentation of SVD表示返回的对角矩阵具有递减顺序的奇异值。有没有办法找出奇异值的自然排序是什么? 我问的原因是因为奇异值对应于与输入矩阵的行相关联的维度。

2 个答案:

答案 0 :(得分:4)

不,SVD的定义不会引入排序。如果XX = U*S*V'的SVD,那么将讨论限制为方X矩阵并采用相同的引用matlab documentation表示法,然后是每permutation matrix {{ {1}},我们可以将有效的SVD形成为P。使用降序值呈现矩阵X = (U*P)*(P'*S*P)*(V*P)'只是为了方便:每个排列S都可以完成同样的工作。

作为旁注:P'*S*P显示矩阵P*X = P*U*S*V' 的行排列不会更改奇异值X,这可以被视为独立于S的任何行(或列)排列。

答案 1 :(得分:3)

我希望在回复之前能够了解这里的问题。例如,我在文件交换上发布的eigenshuffle工具允许您对一系列特征问题的特征值和特征向量进行重新排序,因此它们在序列上最大程度地相互一致。也许你的问题是相似的,因此你可能会认为奇异值是随着一些驱动系统的参数而变化的函数。

但实际上,用于计算SVD的方法不存在奇异值的自然排序。实际上,唯一有意义的排序是出现的顺序 - 降序。奇异值的顺序不依赖于矩阵行的顺序,因为这个问题似乎含糊不清,所以我不确定那里是什么意思。

如果您的需求更加清晰,请随时修改问题。