在Matlab中确定SVD后U矩阵的“最大”奇异向量

时间:2016-06-15 11:53:56

标签: matlab svd matrix-math

众所周知,在Matlab中,SVD函数输出三个矩阵:[U,S,V] = svd(X)。 实际上,'U'是一个方形m X m矩阵,其中m是行/列数。此外,'S'是具有维数m X n的非方矩阵,其以降序(对角线)存储n个奇异值(由U矩阵的左奇异向量产生)。

我的问题是如何确定(在Matlab中)矩阵'U'的哪个'm'奇异向量对应于'S'矩阵的第一(最大)奇异值。此外,特定奇异向量的一些值是正的而另一些是负的。这个减号或加号是否隐藏了任何数学意义?我已经看到了使用“最大”奇异向量的符号作为分类目的的示例。

2 个答案:

答案 0 :(得分:0)

S矩阵的对角线包含奇异值。因此,对于第i个奇异值(在i中,在S矩阵上的i位置),分别针对两个约束方程的U和V向量的第i列。

我不认为+/-隐藏任何特殊含义。毕竟,你可以将U和V矩阵乘以-1常数,结果仍然有效。

答案 1 :(得分:0)

  • 为了完全准确,根据定义,SVD的奇异值不一定需要重新排序,但是MATLAB SVD重新排序它们。

U的第i列对应于M的第i个奇异值。 即,对于第i个奇异值sigma_j,存在j

M* .u_i = sigma_j v_j

你也有

M. v_j = sigma_i u_i

小心,它可能不是你想要的。

  • 您的奇异值的坐标是原始基础中的坐标。正值表示新变量与相应的原始变量成正比。在统计中,当您知道原始变量和变换变量一起增加或减少时,通常会使用它。