[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
singular value decompostion
- Subject: singular value decompostion
- From: Dave Bazell <bazell(at)home.com>
- Date: Thu, 01 Jul 1999 02:19:13 GMT
- Newsgroups: comp.lang.idl-pvwave
- Organization: @Home Network
- Xref: news.doit.wisc.edu comp.lang.idl-pvwave:15490
I am trying to use the IDL routine SVDC to do principal component
analysis. In order to understand SVD better I was doing an example I
found online. However, the IDL SVD routine gives me different results
than the online example.
x = [[1,2],[3,4],[5,6],[7,8]]
matlab, which uses linpac gives (to two decimal places):
[U,S,V] = svd(x) where X = U S transpose(V)
U = .15 .82 -.39 -.38
.35 .42 .24 .80
.55 .02 .70 .46
.74 -.38 -.54 .04
S = 14.3 0
0 .62
V = .64 -.77
.77 .64
IDL gives
svdc, x,w,u,v,/column
w = 14.2691 0.626828
u = -0.641423 -0.767187
-0.767187 0.641423
0.00000 0.00000
0.00000 0.00000
v = -0.152483 -0.349918 -0.547354 -0.744789
0.822647 0.421375 0.0201032 -0.381169
0.547723 -0.730297 -0.182574 0.365149
0.00000 0.408249 -0.816496 0.408248
clearly the eigenvalues are the same but the u and v matricies are
exchanged. But what really bothers me is that some values are changed
from positive to negative. And the IDL V does not have the same values
as the MATLAB U.
What am I doing wrong? Even if I leave out the /column in the call to
svdc, I don't get the right answers.
The eigenvalues do not correspond to the eigenvalues returned by the IDL
routine pcomp which calculates principal components. I thought PCA
could be done using SVD but I don't see the correspondence.
Any help would be appreciated.
Thanks.
Dave
bazell@home.com