35 lines
685 B
Mathematica
35 lines
685 B
Mathematica
|
|
function F = lowrank(F,x)
|
||
|
|
% LOWRANK is used to declare that a semidefinite constraint uses data with low rank.
|
||
|
|
% Used in combination with the solver SDPLR
|
||
|
|
|
||
|
|
identifiers = [];
|
||
|
|
F = flatten(F);
|
||
|
|
for i = 1:length(F.LMIid)
|
||
|
|
switch F.clauses{i}.type
|
||
|
|
case 1
|
||
|
|
identifiers = [identifiers F.LMIid(i)];
|
||
|
|
otherwise
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
if isempty(identifiers)
|
||
|
|
F = ([]);
|
||
|
|
return
|
||
|
|
end
|
||
|
|
|
||
|
|
if nargin>1
|
||
|
|
variables = getvariables(x);
|
||
|
|
else
|
||
|
|
variables = [];
|
||
|
|
end
|
||
|
|
|
||
|
|
lrData.id = identifiers;
|
||
|
|
lrData.variables = variables;
|
||
|
|
|
||
|
|
%F.clauses = {{F.clauses{1}}};
|
||
|
|
F.clauses{1}.data = lrData;
|
||
|
|
F.clauses{1}.type = 14;
|
||
|
|
F.LMIid = -1;
|
||
|
|
F.clauses{1}.strict = 0;
|
||
|
|
F.clauses{1}.cut = 0;
|