Dynamic-Calibration/utils/YALMIP-master/extras/@lmi/lmiinfo.m

35 lines
1.0 KiB
Matlab
Executable File

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,:);