MATLAB Complex-Symmetric Matrix SVD with Matlab: Conjugate Relationship Not Seen

  • Thread starter Thread starter Heavytortoise
  • Start date Start date
  • Tags Tags
    Matlab Svd
Click For Summary
For a complex-symmetric matrix A, the singular value decomposition (SVD) should yield U and V as complex conjugates, but experiments in Matlab show that while magnitudes match, they are not conjugates. The Matlab documentation does not specifically address complex-valued matrices, yet the svd() function processes them and returns U, Sigma, and V correctly. The SVD is not unique; U and V can be scaled by complex numbers of norm 1, leading to variations in results. Similar behavior is observed in Octave, suggesting a consistent issue across platforms. Further investigation on Mathworks forums may provide clarity on the SVD implementation in Matlab.
Heavytortoise
Messages
1
Reaction score
0
For a square, complex-symmetric matrix ##A##, the columns of the right and left matrices ##U## and ##V## of the singular value decomposition should be complex conjugates, since for A=A^T, A\in{\mathbb C}^{N\times N},
<br /> A = U\Sigma V^H, A^T=(U\Sigma V^H)^T<br />
so that
<br /> U\Sigma V^H=(V^H)^T\Sigma U^T.<br />
Then we have U=(V^H)^T, right? So why isn't this the case when I run a few experiments with Matlab? The magnitudes of the elements of ##U## and ##V## are equal, but they aren't conjugates. The expected relationship holds for real ##A##, where ##U## and ##V## are real-valued, but not for complex symmetric matrices. Who's screwed up here, me or Matlab?
 
Last edited by a moderator:
Physics news on Phys.org
This question has gone a long time without being answered.

I don't have a solution to your question but some insight.

Note that the documentation for Matlab's svd() command does not mention complex valued matrices.

The command will accept complex-valued input and produce results U, Sigma, and V. And you can use U*Sigma*VT to get back the same A.

The functions like svd() in Matlab are numeric processes.

I can confirm that the open-source Octave produces similar results as Matlab.

It's likely that searching the Mathworks forum will get an answer from someone familiar with the inner workings of Matlab's svd() function.

https://www.mathworks.com/matlabcentral/content/communities.html
 
  • Like
Likes Greg Bernhardt
I don't have Matlab available right now, but the svd decomposition is not unique. In particular the U and V define the unit vectors that are being mapped to each other, and in complex land you can scale the unit vectors on each side by complex numbers of norm 1 in an appropriate way and get another svd representation. I'm guessing this is causing the problem, the algorithm doesn't guarantee if picks a specific choice of representation.
 
  • Like
Likes Greg Bernhardt and scottdave

Similar threads

  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 12 ·
Replies
12
Views
2K
Replies
5
Views
8K
  • · Replies 1 ·
Replies
1
Views
1K
  • · Replies 3 ·
Replies
3
Views
3K
  • · Replies 3 ·
Replies
3
Views
20K
  • · Replies 1 ·
Replies
1
Views
5K
  • · Replies 2 ·
Replies
2
Views
5K
Replies
11
Views
6K
  • · Replies 9 ·
Replies
9
Views
3K