众所周知,在Matlab中,SVD函数输出三个矩阵:[U,S,V] = svd(X)。 实际上,'U'是一个方形m X m矩阵,其中m是行/列数。此外,'S'是具有维数m X n的非方矩阵,其以降序(对角线)存储n个奇异值(由U矩阵的左奇异向量产生)。
我的问题是如何确定(在Matlab中)矩阵'U'的哪个'm'奇异向量对应于'S'矩阵的第一(最大)奇异值。此外,特定奇异向量的一些值是正的而另一些是负的。这个减号或加号是否隐藏了任何数学意义?我已经看到了使用“最大”奇异向量的符号作为分类目的的示例。
答案 0 :(得分:0)
S矩阵的对角线包含奇异值。因此,对于第i个奇异值(在i中,在S矩阵上的i位置),分别针对两个约束方程的U和V向量的第i列。
我不认为+/-隐藏任何特殊含义。毕竟,你可以将U和V矩阵乘以-1常数,结果仍然有效。
答案 1 :(得分:0)
U的第i列对应于M的第i个奇异值。 即,对于第i个奇异值sigma_j,存在j
M* .u_i = sigma_j v_j
你也有
M. v_j = sigma_i u_i
小心,它可能不是你想要的。