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

40 lines
1.3 KiB
Matlab
Executable File

function Freal = imag2reallmi(F)
F = flatten(F);
Counter = size(F.clauses,2);
Freal = F;
j=1;
for i = 1:Counter
if isreal(F.clauses{i}.data)
Freal.clauses{j}=F.clauses{i};
j = j+1;
else
switch F.clauses{i}.type
case 1
if hasfactors(Freal.clauses{j}.data)
% We use factor-tracking lifting
Freal.clauses{j}.data = lift2real(F.clauses{j}.data);
else
% Fast without tracking
reF=real(F.clauses{j}.data);
imF=imag(F.clauses{j}.data);
Freal.clauses{j}.data = [reF imF;-imF reF];
end
j = j+1;
case {2,3}
reF=real(F.clauses{j}.data);
imF=imag(F.clauses{j}.data);
Freal.clauses{j}.data=[reF;imF];
j = j+1;
case 4
reF=real(F.clauses{j}.data);
imF=imag(F.clauses{j}.data);
Freal.clauses{j}.data=[reF(1);reF(2:end);imF(2:end)];
j = j+1;
otherwise
error('Internal bug. Please report.');
end
end
end