Dynamic-Calibration/utils/YALMIP-master/extras/sdd.m

20 lines
478 B
Mathematica
Raw Normal View History

2019-12-18 11:25:45 +00:00
function Constraint = sdd(X)
if issymmetric(X)
Constraint = [];
n = size(X,1);
M = 0;
for ii = 1:n
for jj = [1:1:ii-1 ii+1:1:n]
Mij = sdpvar(2);
Constraint = Constraint + sdp2socp(Mij);
M = M + sparse([ii jj ii jj],[ii ii jj jj],Mij(:),n,n);
end
end
Constraint = Constraint + [M == X];
else
error('sdd requires a symmetric argument.');
end
function F = sdp2socp(M)
F=rcone(M(1,2),.5*M(1,1),M(2,2));