Aide pour les ACP en matlab

Résolu/Fermé
cixidetroy - 13 juin 2008 à 15:53
traitement d'image Messages postés 1 Date d'inscription mercredi 3 août 2011 Statut Membre Dernière intervention 3 août 2011 - 3 août 2011 à 12:01
Bonjour,

je suis tres (tres) debutante en informatique, et manque de bol.... je me trouve en stage en informatique... apres une semaine passee a ramer en perl, mon maitre de stage m'a demande de trouver un programme "tout fait" sur internet pour calculer les ACP(que avant ce matin je n'avais jamais entendu parler...)en matlab... bien sur, je n'ai pas trouve, aussi j'essaie de le faire...
je pense que ce que j'ai fait est bien naif pour un oeil averti, mais pour moi, c'est tres opaque....(function[]=acp(X) ;
n=length(X)
for i=1:n
B(i)=std(X): end
S=B*B'/(n+1);
[V,D]=eig(S);


d'abord... comment fonctionne la fontion std pour une matrice? que faut il mettre en argument? ( j'ai essaye de lire l'aide, ;ais g pas compris...) et la fonction eig?

est-ce qu'il vaut mieux utiliser ces fonctions ou bien en refaire mieux adaptees?

je n'ai vraiment aucune idee de comment commencer.....

merci d'avance

Sophie

3 réponses

Sacabouffe Messages postés 9427 Date d'inscription dimanche 19 août 2007 Statut Membre Dernière intervention 29 mai 2009 1 835
17 juin 2008 à 13:25
Salut

std calcule l'écart type.
Si l'argument est un vecteur X, ben ça calcule l'écart type σ de la série représentée par les valeurs du vecteur, c'est-à-dire σ²=E[(X-E[X])²]
Si l'argument est une matrice X, std(X) est un vecteur ligne dont les valeurs sont les écarts type de chaque colonne de X.
Après tu peux préciser d'autres cochonneries en option.

eig calcule les valeurs propres d'une matrice.
Donc pour une matrice carrée X, eig(X) est un vecteur colonne contenant les valeurs propres de X.
Si en plus tu veux avoir les vecteurs propres, tu tapes [P,D] = eig(X).
D sera le vecteur colonne des valeurs propres. Les colonnes de P sont les vecteurs propres correspondant, c'est-à-dire X*P = P*D
Il y a d'autres trucs qu'on peut faire avec aussi, mais bon... j'espère que ça te suffira pour le moment.

A plus
2
salut,

moi aussi j'utilise l'ACP en Matlab, j'ai pu calculer vecteur des moyennes, vecteur des ecarts-types, Centrage des données, Matrice diagonale des 1/ect, Matrice des données centrées et réduites, Matrice des corrélations, Vecteurs et valeurs propres et Coordonnées des individus sur les axes

ma question est comment en déduire la matrice réduire?

merci d'avance pour votre réponse
0
La matrice des composante principale est le produit de la matrice des données centrées réduites par la matrice des vecteurs propres.

J'aurais moi même une question :
une fois les composantes principales obtenues, comment reconstruire le signale à partir des composantes pertinentes, que ce soit pour supprimer du bruit ou supprimer l'influence une variable gênante ?
Merci.
0
traitement d'image Messages postés 1 Date d'inscription mercredi 3 août 2011 Statut Membre Dernière intervention 3 août 2011
3 août 2011 à 12:01
bjr
je travail sur un sujet en traitement d image et je dois utiliser cette fonction ACP g le programme mais g du mal à comprendre les étapes est ce quil ya kkn qui pourra me donner un petit coup de main merci d'avance et bonne journée voici la fonction
function [Evalues, Evectors, x_mean]=PCA(x)
% PCA using Single Value Decomposition
% Obtaining mean vector, eigenvectors and eigenvalues
%
% [Evalues, Evectors, x_mean]=PCA(x);
%
% inputs,
% X : M x N matrix with M the trainingvector length and N the number
% of training data sets
%
% outputs,
% Evalues : The eigen values of the data
% Evector : The eigen vectors of the data
% x_mean : The mean training vector
%
%
s=size(x,2);
% Calculate the mean
x_mean=sum(x,2)/s;

% Substract the mean
x2=(x-repmat(x_mean,1,s))/ sqrt(s-1);

% Do the SVD
[U2,S2] = svds(x2,s);
Evalues=diag(S2).^2;
Evectors=U2;
0