As an example in MATLAB
[U,S,V]=svd(randn(3,2)+1j*randn(3,2))
assert(isreal(V(1,:)))
Why is the first row of V purely real?
As an example in MATLAB
[U,S,V]=svd(randn(3,2)+1j*randn(3,2))
assert(isreal(V(1,:)))
Why is the first row of V purely real?
On
Paul Aljabar has the right answer. But just to expand on it a little. The SVD is not unique. The singular values are unique but the singular vectors are not.
If the SVD of $A$ is $U \Sigma V'$ then $ A = \sum_j \sigma_j u_j v_j^*$ where $u_j$ and $v_j$ are the $j$-th columns of $U$ and $V$ respectively. Given a set of unit-phase factors $a_j = e^{i\phi_j}$ then $a_j a_j^* =1$ and so $ A = \sum_j a_j a_j^* \sigma_j u_j v_j^* = \sum_j \sigma_j u'_j {v'_j}^*$ where $ u'_j = a_j u_j $ and $ v'_j = a_j v_j $. The matrices $\{U'\}$ and $\{V'\}$ are still unitary.
Quoting from the Wikipedia entry:
(my emphasis).
So it seems, in this case, that the MatLab team have chosen to rotate the singular vectors so that the first element of each is real.