- #1

- 35

- 0

## Main Question or Discussion Point

Hi all:

I have a covariance matrix which is like:

0.00166713 -0.00060678 4.60534e-05

-0.00060678 0.00178576 -0.000244526

4.60534e-05 -0.000244526 0.000772057

And then I want to eigen decompose the matrix to obtain the eigenvector matrix. I tried several methods, one is to use the LaEigSolve in the lapack++ library. This gives me the result:

0.655504 -0.742432 0.138237

-0.743371 -0.60208 0.291375

0.133097 0.293759 0.946568

Then I tried to use svdcmp routine of the Numerical recipe which gives me:

-0.655504 0.742432 0.138237

0.743371 0.60208 0.291375

-0.133097 -0.293759 0.946568

I also tried to use eig() in matlab which gives me:

-0.6555 0.7424 0.1383

0.7434 0.6021 0.2914

-0.1331 -0.2938 0.9465

By using pcacov(), the result is:

-0.6555 -0.7424 0.1383

0.7434 -0.6021 0.2914

-0.1331 0.2938 0.9465

Actually, I am writing a program of Pinciple Component Analysis in C++. But I don't really know which one is reliable and correct. The pcacov() seems to give me the correct result but I really don't understand why it's different from the others.

Can anyone help me with it please?

Thanks

I have a covariance matrix which is like:

0.00166713 -0.00060678 4.60534e-05

-0.00060678 0.00178576 -0.000244526

4.60534e-05 -0.000244526 0.000772057

And then I want to eigen decompose the matrix to obtain the eigenvector matrix. I tried several methods, one is to use the LaEigSolve in the lapack++ library. This gives me the result:

0.655504 -0.742432 0.138237

-0.743371 -0.60208 0.291375

0.133097 0.293759 0.946568

Then I tried to use svdcmp routine of the Numerical recipe which gives me:

-0.655504 0.742432 0.138237

0.743371 0.60208 0.291375

-0.133097 -0.293759 0.946568

I also tried to use eig() in matlab which gives me:

-0.6555 0.7424 0.1383

0.7434 0.6021 0.2914

-0.1331 -0.2938 0.9465

By using pcacov(), the result is:

-0.6555 -0.7424 0.1383

0.7434 -0.6021 0.2914

-0.1331 0.2938 0.9465

Actually, I am writing a program of Pinciple Component Analysis in C++. But I don't really know which one is reliable and correct. The pcacov() seems to give me the correct result but I really don't understand why it's different from the others.

Can anyone help me with it please?

Thanks