2012-08-10 1 views
0

J'ai une image 1024x704x256 que j'ai réorganisée en une matrice 2D. Chaque ligne représente un canal d'énergie et chaque colonne représente un pixel. J'accomplis PCA pour réduire le nombre de bandes avec le code:Réduction des dimensions en utilisant eigs ou eig

A=A-repmat(mean(A,2),1,size(A,2)); 
[V, D] = eig(cov(A')); 
Evalues = diag(D); 
pc = V * A; 

où A = ensemble de données 2D moyenne ajustée, V = matrice de vecteurs propres, et D = matrice de valeurs propres.

Mon problème est que les sorties (en utilisant eigs ou eig) pour V et D sont automatiquement dans l'ordre croissant. Je n'ai pas eu ce problème en utilisant ces fonctions auparavant sur des ensembles de données plus petits. J'ai besoin de savoir quelles paires vecteur/valeur correspondent aux lignes de la matrice A pour une analyse plus poussée. Des idées?

+0

Le but de la PCA est de transformer les données d'origine en un ensemble de composants orthogonaux. Ainsi, vous * devez * perdre la correspondance aux lignes de votre ensemble de données d'origine. – Mehrwolf

Répondre

1

Le problème de valeur propre/vecteur propre peut être définie comme

A*V = lambda*V 

lambda est scalaire (une valeur propre), et V est un vecteur (un vecteur propre). Dans la mesure où je peux voir, ni les valeurs propres ni les vecteurs propres n'ont une correspondance spécifique à des lignes individuelles dans la matrice A

Pouvez-vous expliquer pourquoi vous ne voulez pas que vos valeurs propres/vecteurs soient ordonnés?

+0

Merci d'avoir répondu. Je voudrais réduire le nombre de variables de 256 à six ou moins. Quand je réduis le nombre de variables, je ne suis pas sûr de celles que je garderai inévitablement. Peut-être que ce n'est pas un problème de la fonction eigs, mais j'ai été confondu avec la sortie ordonnée, ayant reçu une sortie non ascendante avant. – Kathy

+0

Hmmm ... Si la mémoire est bonne, les algorithmes eigenvalue/vector-efficient efficaces renvoient les plus grandes paires valeur/vecteur * d'abord *, donc c'est complètement * inattendu * si la sortie de eig() n'est * pas * triée ... –

Questions connexes