Fit a PLS model to the centered data, e.g.,

[Xfactors,Yfactors,Core,B]=npls(Xcalm,Ycalm,7);

and convert the parameters to scores and loadings

> [T,Wj,Wk]=fac2let(Xfactors);
> [U,Q]=fac2let(Yfactors);

Use standard plots to evaluate the model, e.g.

Spectral score plot
plot(T(:,1),T(:,2),'o')
for i = 1:size(T,1)
  text(T(i,1),T(i,2),num2str(i))
end
title('SCORE PLOT')
xlabel('Score 1')
ylabel('Score 2')

T/U score plot

for j = 1:4

  subplot(2,2,j)

  plot(T(:,j),U(:,j),'o')
     for i = 1:size(T,1)
      text(T(i,j),U(i,j),num2str(i))

     end

     title('T/U PLOT')
     xlabel('Score 1')
     ylabel('Score 1')

end

Loading plot
plot(EmAx,Wj(:,1:4))
title('Emission loading plot')
xlabel('Wavelength/nm')
ylabel('Loading')

Determine the optimal number of components, e.g.

Ynpls=[];
RMSEP=[];
for i=1:7
  yp=npred(Xtestm,i,Xfactors,Yfactors,Core,B)+mean(ColorCal);
  Ynpls=[Ynpls yp];
  RMSEP=[RMSEP sqrt(mean( (yp-ColorVal)'*(yp-ColorVal) ))];
end
plot([1:7],RMSEP)
title('SCREE PLOT')
xlabel('Number of components')
ylabel ('RMSEP')  
plot(ColorCal,Ynpls(:,OptNumb),'o')

where OptNumb is the number you've determined as the optimal number of components (minimal RMSEP).

ylabel ('Predicted')
xlabel ('Reference')