How to “use unfold & three-way PLS for building a regression model” 

Make data
Xcal   = X(1:2:10,:,:); 
Ycal   = salt(1:2:10); 
Xtest  = X(2:2:10,:,:); 
Ytest  = salt(2:2:10);
 

Center the data across the first mode in order to possible differences in off-sets 
CentX  = [1 0 0]; 
ScalX  = [0 0 0]; 
[Xcalmean,MeansX,ScalesX] = nprocess(Xcal,CentX,ScalX);

CentY  = [1 0]; 
ScalY  = [0 0]; 
[Ycalmean,MeansY,ScalesY] = nprocess(Ycal,CentY,ScalY);

Preprocess the validation data using given mean values 
Xtestmean = nprocess(Xtest,CentX,ScalX,MeansX,ScalesX); 
Ytestmean = nprocess(Ytest,CentY,ScalY,MeansY,ScalesY);

Calculate an N-PLS model & get model parameters 
[Xfactors,Yfactors,Core,B] = npls(Xcalmean,Ycalmean,4); 
[T,Wj,Wk] = fac2let(Xfactors); 
[U,Q] = fac2let(Yfactors);

Predict the left-out samples 
Yn = []; 
RMSEPn = []; 
for i = 1:4 
    yp = npred(Xtestmean,i,Xfactors,Yfactors,Core,B); 
    yp = yp+MeansY{1}; 
    Yn = [Yn yp]; 
    SS = (yp-Ytest)'*(yp-Ytest); 
    RMSEPn = [RMSEPn sqrt(SS/5)]; 
end

Calculate an unfold-PLS model & get model parameters 
[Xfactors,Yfactors,Core,B] = npls(reshape(Xcalmean,5,88),Ycalmean,4); 
% Exactly the same as above but now the dimensions are changed 
% Instead of [5 11 8] it's [5 88 1], i.e., a two-way matrix 
[t,w] = fac2let(Xfactors); 
[u,q] = fac2let(Yfactors);

Predict the left-out samples 
Y = []; 
RMSEP = []; 
for i = 1:4 
    yp = npred(reshape(Xtestmean,5,88),i,Xfactors,Yfactors,Core,B); 
    yp = yp+MeansY{1}; 
    Y = [Y yp]; 
    SS = (yp-Ytest)'*(yp-Ytest); 
    RMSEP = [RMSEP sqrt(SS/5)]; 
end

Compare prediction errors 
format bank

disp('RMSEP') 
disp(' LV N-PLS  PLS') 
disp([[1:4]' RMSEPn' RMSEP'])

format

Compare predictions using two components 
subplot(1,2,1) 
plot(salt(2:2:10), Yn(:,2),'o') 
title('N-PLS model', 'FontWeight', 'Bold') 
xlabel('Reference content') 
ylabel('Predictions') 
hold on 
plot(salt,salt, 'r') % Add target line 
hold off

subplot(1,2,2) 
plot(salt(2:2:10), Y(:,2),'o') 
title('PLS model', 'FontWeight', 'Bold') 
xlabel('Reference content') 
ylabel('Predictions') 
hold on 
plot(salt, salt,'r') % Add target line 
hold off