clc

% b) Khatri-Rao product

fprintf('\n\n')
disp('*******************************************************************')
disp('*                     Khatri-Rao product                          *')
disp('*******************************************************************')
disp('')

A = rand(4,3)
B = rand(5,3)

C = khatriRao(A,B)


fprintf('\n\n')
disp('Press any key to continue...')
pause

clc






% create 2x2x2 tensor
T=zeros(2,2,2);
T(:,:,1)=[1 1; 0 0];
T(:,:,2)=[1 1; 2 2];

disp('*******************************************************************')
disp('*                     2x2x2 tensor:                               *')
disp('*******************************************************************')
T


% c) Vectorization

fprintf('\n')
disp('*******************************************************************')
disp('Vectorization:')
disp('*******************************************************************')
disp('')
v = vectorize(T)



% d) Mode-n-unfoldings
fprintf('\n')
disp('*******************************************************************')
disp('Matricizations:')
disp('*******************************************************************')
disp('')
disp('Mode-1-unfolding:')
X1 = computeUnfolding(T,1)

disp('')
disp('Mode-2-unfolding:')
X2 = computeUnfolding(T,2)

disp('')
disp('Mode-3-unfolding:')
X3 = computeUnfolding(T,3)


fprintf('\n')
disp('*******************************************************************')
disp('Tucker ranks:')
disp('*******************************************************************')
disp('')

ranks = getTuckerRanks(T)