Matlab - PCA

 
Vista:

PCA

Publicado por maxarena (5 intervenciones) el 17/05/2005 09:19:32
Alguien me podria como puedo calcular la PCA "Principal component analysis"????que funicion o funciones, o algun ejemplo o algo!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:PCA

Publicado por fer (4 intervenciones) el 31/05/2005 17:05:35
en la toolbox gratuita fuzzy clustering toolbox tienes un analizador PCA
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:PCA

Publicado por Jose Armando (2 intervenciones) el 06/10/2005 04:08:10
Hola [email protected] !!!

Este es un cógido de PCA implementado en MATLAB con dos nubes aleatorias (X1X2), lo que hace es mapear a un nuevo espacio representado por las rectas que se muestran en la figura.

Tambien se puede hacer con la nube X1 que está comentada....

Hasta luego,

José Armando.

% ------------------------------------------------------

clc

%X1 = [2 1.5 0.7 0.5 0.5 0.7; 2 0.5 0.5 1.5 0.7 0.7]';
X1 = [randn(1,20); randn(1,20)]';
X2 = [randn(1,10); randn(1,10)]';
[fX1,cX1]=size(X1);
[fX2,cX2]=size(X2);

s1 = cov(X1);
s2 = cov(X2);

lamda1 = eig(s1);
lamda2 = eig(s2);

ec1 = s1 - max(lamda1)*eye(cX1);
[fil1,col1]=size(ec1);
a1=[1;ec1(1:fil1-1,2:col1)^-1*(-ec1(1:fil1-1,1))];
a1=a1/norm(a1);
ang1 = atan2(a1(2),a1(1));
z1=X1*a1;
z1_x=z1*cos(ang1);
z1_y=z1*sin(ang1);

ec2 = s2 - max(lamda2)*eye(cX2);
[fil2,col2]=size(ec2);
a2=[1;ec2(1:fil2-1,2:col2)^-1*(-ec2(1:fil2-1,1))];
a2=a2/norm(a2);
ang2 = atan2(a2(2),a2(1));
z2=X2*a2;
z2_x=z2*cos(ang2);
z2_y=z2*sin(ang2);

min_x1=min(z1_x);
max_x1=max(z1_x);

plot(X1(:,1),X1(:,2),'*');
hold on;
plot([0 a1(1)],[0 a1(2)]);
plot([min_x1 max_x1],[(a1(2)/a1(1))*min_x1 (a1(2)/a1(1))*max_x1],'--');
plot(z1_x,z1_y,'or')

min_x2=min(z2_x);
max_x2=max(z2_x);

plot(X2(:,1),X2(:,2),'*g');
plot([0 a2(1)],[0 a2(2)],'g');
plot([min_x2 max_x2],[(a2(2)/a2(1))*min_x2 (a2(2)/a2(1))*max_x2],'--g');
plot(z2_x,z2_y,'ok')

% ------------------------------------------------------
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar