Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

New to MATLAB?

svd(A) vs. eig(A'*A) and eig(A*A')

Asked by Ruye Wang

Ruye Wang (view profile)

on 20 Feb 2013

When I use [U,S,V]=svd(A), I can reproduce A by U*S*V'. However, if I generate U and V by solving two eigenvalue problems [V,D]=eig(A'*A) and [U,D]=eig(A*A'), respectively, the resulting U and V may or may NOT satisfy U*S*V'=A, due possibly to the sign difference of some of the columns (eigenvectors). While the columns of the U's and V's produced by these two different methods have the same absolute values, they may have different signs, simply because if u_i is an eigenvector of A*A', so is -u_i.

But if U*S*V'~=A for some U and V, isn't the SVD theorem violated?

Ruye Wang

Ruye Wang (view profile)



1 Answer

Answer by Jan Simon

Jan Simon (view profile)

on 20 Feb 2013
Accepted answer

I do not understand, where you see a violation. When you create U and V by another method, and consider, that they are not uniquely defined, it can be expected, that you get incompatible U and V matrices. If you want the orientation of the eigenvectors to satisfy U*S*V'=A, calculating them by solving the two separate eigenvalue problems eig(A'*A) and eig(A*A') is not sufficient.

1 Comment

Ruye Wang

Ruye Wang (view profile)

on 7 May 2013

Thanks for answering the question!

Jan Simon

Jan Simon (view profile)

Contact us