-
Notifications
You must be signed in to change notification settings - Fork 7
/
fac2let.m
36 lines (31 loc) · 1000 Bytes
/
fac2let.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
function [A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,X,Y,Z]=fac2let(Factors,DimX);
%FAC2LET Convert 'Factors' to component matrices
%
%
% [A,B,C]=fac2let(Factors);
% [A,B,C,D]=fac2let(Factors);
% [A,B,C,D,E]=fac2let(Factors);
% .....
% [A,B,C,...,Z]=fac2let(Factors);
%
% This algorithm applies to the N-way case (2<N<25).
%
% Copyright (C) 1995-2006 Rasmus Bro & Claus Andersson
% Copenhagen University, DK-1958 Frederiksberg, Denmark, rb@life.ku.dk
%
% $ Version 1.02 $ Date 28. July 1998 $ Not compiled $
% $ Version 2.00 $ May 2001 $ Changed to array notation $ RB $ Not compiled $
Txt='ABCDEFGHIJKLMNOPQRSTUVXYZ';
if nargin==2
order = length(DimX);
F = prod(length(Factors))/sum(DimX);
for i=1:order
start = sum(DimX(1:i-1))*F+1;
endd = sum(DimX(1:i))*F;
eval([Txt(i) ,'= reshape(Factors(',num2str(start),':',num2str(endd),'),',num2str(DimX(i)),',',num2str(F),');']);
end
else
for i = 1:length(Factors)
eval([Txt(i) ,'= Factors{i};']);
end
end