LINE Solver
MATLAB API documentation
Loading...
Searching...
No Matches
mmap_super.m
1function SUP = mmap_super(MMAPa,MMAPb,opt)
2
3% SUP = mmap_super(MMAPa,MMAPb,opt)
4if nargin ==2 || (nargin ==3 && strcmpi(opt,'default'))
5 % each class in MMAPa and MMAPb is a distinct class in SUP
6 K1 = length(MMAPa)-2;
7 K2 = length(MMAPb)-2;
8 n1 = length(MMAPa{1});
9 n2 = length(MMAPb{1});
10 SUP = {};
11 SUP{1} = krons(MMAPa{1},MMAPb{1});
12 SUP{2} = krons(MMAPa{2},MMAPb{2});
13
14 for i=1:K1
15 SUP{end+1} = krons(MMAPa{2+i},zeros(n2));
16 end
17
18 for j=1:K2
19 SUP{end+1} = krons(zeros(n1),MMAPb{2+j});
20 end
21elseif nargin ==3 && strcmpi(opt,'match')
22 % class c in both MMAPa and MMAPb is mapped both into class c of SUP
23 K1 = length(MMAPa);
24 K2 = length(MMAPb);
25 if K1 ~= K2
26 error('class matching failed: MMAPs have different number of classes');
27 end
28 SUP = {};
29 for i=1:K1
30 SUP{i} = krons(MMAPa{i},MMAPb{i});
31 end
32elseif nargin == 1
33 empty = cellfun(@isempty, MMAPa);
34 MMAPa(empty)=[];
35 SUP = MMAPa{1};
36 for i=2:length(MMAPa)
37 SUP = mmap_super(SUP,MMAPa{i});
38 end
39else
40 error('unrecognized option');
41end
42
43SUP = mmap_normalize(SUP);
44end