24 lines
523 B
Mathematica
24 lines
523 B
Mathematica
|
|
function sys = logdet(P)
|
||
|
|
|
||
|
|
% Create an object
|
||
|
|
if isa(P,'sdpvar')
|
||
|
|
if is(P,'hermitian')
|
||
|
|
superiorto('double')
|
||
|
|
superiorto('sdpvar')
|
||
|
|
sys.P = {P};
|
||
|
|
sys.cx = [];
|
||
|
|
sys.gain = 1;
|
||
|
|
sys = class(sys,'logdet');
|
||
|
|
else
|
||
|
|
error('logdet can only be applied to Hermitian SDPVAR objects')
|
||
|
|
end
|
||
|
|
elseif isa(P,'double')
|
||
|
|
if isessentiallyhermitian(P)
|
||
|
|
sys = sum(log(abs(real(eig(P)))));
|
||
|
|
else
|
||
|
|
error('logdet can only be applied to Hermitian objects')
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
|