Calculate cumulative contribution
From Computational Biophysics and Materials Science Group
% ################################ % ## MATLAB script to calculate cumulative contributions from PCA results % ## Kevin Apr 2014 % ## Input: val.dat (1 col, from PCA) % ## Output: cum.dat (similar to clf.dat from PCA, cumulative % contribution of the eigenvalues) % ## idv.dat (individual contribution from the eigenvalues, basically just for quiverc.m) % ## Units: % ## Notes: It will also give plot of the cum.dat with mode exceeding 90% % indicated. It is a bit slow. Dunno why. % ################################ clear; load('val.dat') % Sum of eigenvalues sum=sum(val(:,2)); tmp=0; for i=1:120 tmp=tmp+val(i,2); c(i)=tmp/sum; if c(i)>=0.9 && c(i-1)<=0.9 ythr=c(i); xthr=i; end c=c'; b(i)=val(i,2)/sum; b=b'; end % Write cumulative contribution to file fname=fopen('cum.dat','w'); fprintf(fname,'%2.6f\n',c); fclose(fname); % Write individual contribution of each mode to file fname=fopen('idv.dat','w'); fprintf(fname,'%2.6f\n',b); fclose(fname); % Start plotting figure; hold on plot(c,'--ro') xlabel('Modes','fontsize',14) ylabel('Mode contribution','fontsize',14) title('Plot of Mode contribution (sym)') plot(0:0.001:120,ythr,'-g') plot(xthr,0:0.001:1,'-b') ss=num2str(xthr); text(xthr+0.3,ythr+0.04,ss) hold off