【发布时间】:2014-06-21 16:46:10
【问题描述】:
有人知道如何确定 Matlab 的 svd 函数产生的奇异向量的符号吗?
让:
B = U*S*V'
成为实数或复数 2×2 矩阵 B 的有效 svd 分解,则:
B = (U*c)*S *(V*c)'
也是有效的,其中c 是一个矩阵,可以改变一个或两个奇异向量的符号:
c = diag([1 -1]), diag([-1 1]) or diag([-1 -1]).
我想知道Matlab的svd算法是如何确定U和V中奇异向量的符号的。
【问题讨论】:
-
没有向量符号这样的东西。唯一可能有符号的是标量,例如,将一个向量投影到另一个向量。您的问题是关于将所有向量更改为位于同一个半空间中吗?
-
我的问题是关于众所周知的 svd 分解的符号歧义 (see here for an example)