Search code examples
matlabpcaeigenvalue

Eigenvalues are always 1


When I get the eigenvalues of the diagonal of a PCA transformed image, I always get 1, whatever the image. What's the reason behind this?

I used the following code.

coeff = pca(pmap);
disp(coeff);

[V,L]=eig (coeff'*coeff);
Lamda = diag(L);
disp(Lamda);

Solution

  • The coeff which pca outputs are already eigenvectors, which are all orthogonal. They are even orthonormal, since MATLAB normalises them. Relative weight is in the explained output parameter of pca.

    So transpose(coeff)*coeff gives you the identity matrix, which just contains ones and the eigenvectors of the identity matrix are, obviously, all just 1 in a single dimension.

    The reason is thus because that's how linear algebra works.