35 lines
1.0 KiB
Mathematica
35 lines
1.0 KiB
Mathematica
|
|
function info = lmiinfo(F)
|
||
|
|
|
||
|
|
info.sdp = [];
|
||
|
|
info.lin = [];
|
||
|
|
info.equ = [];
|
||
|
|
info.soc = [];
|
||
|
|
info.rlc = [];
|
||
|
|
info.pow = [];
|
||
|
|
F = flatten(F);
|
||
|
|
Counter = length(F.LMIid);
|
||
|
|
sdptop = 1;
|
||
|
|
info.sdp = zeros(Counter,3);
|
||
|
|
for i = 1:Counter
|
||
|
|
Fi = F.clauses{i}.data;
|
||
|
|
switch F.clauses{i}.type;
|
||
|
|
case {1,9,40}
|
||
|
|
% Slightly faster, quick fix for user case...
|
||
|
|
info.sdp(sdptop,:) = [size(Fi,1) size(Fi,2) F.LMIid(i)];
|
||
|
|
sdptop = sdptop + 1;
|
||
|
|
case 2
|
||
|
|
info.lin = [info.lin;size(Fi,1) size(Fi,2) F.LMIid(i)];
|
||
|
|
case 3
|
||
|
|
info.equ = [info.equ;size(Fi,1) size(Fi,2) F.LMIid(i)];
|
||
|
|
case {4,54}
|
||
|
|
info.soc = [info.soc;size(Fi,1) size(Fi,2) F.LMIid(i)];
|
||
|
|
case 5
|
||
|
|
info.rlc = [info.rlc;size(Fi,1) size(Fi,2) F.LMIid(i)];
|
||
|
|
case 20
|
||
|
|
info.pow = [info.pow;size(Fi,1) size(Fi,2) F.LMIid(i)];
|
||
|
|
case {7,8}
|
||
|
|
otherwise
|
||
|
|
error('Error in lmiinfo. Please report bug');
|
||
|
|
end
|
||
|
|
end
|
||
|
|
info.sdp = info.sdp(1:sdptop-1,:);
|