The N-way toolbox FAQ


Rasmus Bro & Claus A. Andersson


Find the answer to common questions here



Is there a manual or tutorial for the N-way Toolbox?



There is an on-line course on how to use the toolbox at



When I fit the parafac model I get an error: 

» [factors]=parafac(X,DimX,2);

??? Error using ==> gram

Too many input arguments.

Error in ==> C:\MATLABR11\toolbox\nway\dtld.m

On line 151 ==> [Bg,Cg,Ag]=gram(reshape(Gt(1,:),f,f),reshape(Gt(2,:),f,f),F);

Error in ==> C:\MATLABR11\toolbox\nway\parafac.m

On line 473 ==> [A,B,C]=dtld(X,DimX,Fac);



You may have the PLS_toolbox as well. In that, there is also a function called GRAM. In order to avoid this error, you have to make sure that PARAFAC calls the N-way toolbox version of gram rather than the PLS_toolbox version of GRAM. One way of doing this, is to use pathtool.m for rearranging the order in which the directories are searched. Simply drag the path to the N-way toolbox so that it appears higher in the list than the PLS_toolbox does.



Centering and scaling of data is a bit strange. To center and scale column-wise I need to use "mode 1" for centering and "mode 2" for scaling.



Yes, it seems like a strange convention, but it actually makes sense when one considers the way that higher-order arrays have to be preprocessed (see here). The thing is that centering and scaling are applied in two completely different ways, but just happen to seem alike for two-way analysis. We are so used to two-way analysis, that it is very difficult to re-think the whole issue. Centering is performed across a mode (hence from one vector, the average of that vector is subtracted), whereas scaling is performed within a mode (all elements in one slab are multiplied by the same number). OK: it is not simple, but you can contact us if you want more detailed information! You can also have a look in this theoretical paper on centering and scaling.



I can't find the data sets that are mentioned in the tutorials in the package.


The data sets are downloaded separately from the same page where the actual toolbox is downloaded.



When I type


I get an error message


You can not use inputs like that in MATLAB. You have to input the vector Options directly. You can for example write

>Options(3) = 1

This will put zeros in Options(1:2) and the toolbox will then use defaults. Then you do



Question: Regression coefficients

I have used your toolbox to compute a N-PLS model relating a three-way array X to a Y-vector. I have seen that the B coefficients are the regression coefficients relating the scores in the Y-space to scores in the X-space (inner relation). I would like to obtain the regression coefficients of the closed form of the N-PLS model, i.e. an array of coefficients relating X to Y directly (or relating slabs of X to Y). Could you please tell me how to obtain these regression coefficients in N-PLS modelling?



The regression coefficients are possible to obtain directly from the NPLS algorithm:

[Xfactors,Yfactors,Core,B,ypred,ssx,ssy,reg] = npls(X,y,Fac);

The parameter reg is the set of regression coefficients.

If you have any more questions, suggestions or comments please feel free to mail us.

Back to the N-way Toolbox for MATLAB.