function demo_pca(d,N,sg,plotit); %function demo_pca(d,N,sg,plotit); colordef black if nargin < 4 plotit = 1; end if nargin < 3 sg=0.1; end if nargin < 2 N=200; end if nargin < 1 d=1; end y=randn(d,N); sgs=rand(3,1)*sg n=(sgs*ones(1,N)).*randn(3,N); A=rand(3,d) x=A*y+n; if d==2 xx=[-4 4]; xy=[0 0]; yx=[0 0]; yy=[-4 4]; Axx=A*[-4;0]; Axy=A*[4;0]; Ayx=A*[0;-4]; Ayy=A*[0;4]; XX=[Axx(1) Axy(1)]; XY=[Axx(2) Axy(2)]; XZ=[Axx(3) Axy(3)]; YX=[Ayx(1) Ayy(1)]; YY=[Ayx(2) Ayy(2)]; YZ=[Ayx(3) Ayy(3)]; W=[XX;XY;XZ;YX;YY;YZ]; else Ax=A*-4; Ay=A*4; X=[Ax(1) Ay(1)]; Y=[Ax(2) Ay(2)]; Z=[Ax(3) Ay(3)]; W=[X;Y;Z]; end figure(1);clf; if d==1 hist(y,30); else plot(y(1,:),y(2,:),'y+','Markersize',2,'Linewidth',2);hold on; if d==2 plot(xx,xy,'m','LineWidth',2); plot(yx,yy,'m','Linewidth',2);hold off; end end drawnow; pause; figure(2);clf; rotate3d on; plot3(x(1,:),x(2,:),x(3,:),'c+','Markersize',2,'Linewidth',2);hold on; if d==2 plot3(XX,XY,XZ,'m','LineWidth',2); plot3(YX,YY,YZ,'m','LineWidth',2); else plot3(X,Y,Z,'m','LineWidth',2); end drawnow; pause [A,Sig] = FA(x,d,plotit,W) if d==2 Axx=A*[-4;0]; Axy=A*[4;0]; Ayx=A*[0;-4]; Ayy=A*[0;4]; XX=[Axx(1) Axy(1)]; XY=[Axx(2) Axy(2)]; XZ=[Axx(3) Axy(3)]; YX=[Ayx(1) Ayy(1)]; YY=[Ayx(2) Ayy(2)]; YZ=[Ayx(3) Ayy(3)]; else Ax=A*-4; Ay=A*4; X=[Ax(1) Ay(1)]; Y=[Ax(2) Ay(2)]; Z=[Ax(3) Ay(3)]; end figure(2); rotate3d on; %plot3(x(1,:),x(2,:),x(3,:),'c+','Markersize',2,'Linewidth',2);hold on; if d==2 plot3(XX,XY,XZ,'r','LineWidth',3); plot3(YX,YY,YZ,'r','LineWidth',3); else plot3(X,Y,Z,'r','LineWidth',3); end drawnow;