35 lines
647 B
Mathematica
35 lines
647 B
Mathematica
|
|
function F = projection(F,x,method)
|
||
|
|
% REDUCE Removes redundant constraints using MPT
|
||
|
|
%
|
||
|
|
% Freduced = reduce(F)
|
||
|
|
%
|
||
|
|
% F : Polytopic constraint object
|
||
|
|
%
|
||
|
|
% See also POLYTOPE, PROJECTION
|
||
|
|
|
||
|
|
f = [];
|
||
|
|
F = flatten(F);
|
||
|
|
for i = 1:length(F)
|
||
|
|
if F.clauses{i}.type==2
|
||
|
|
fi = F.clauses{i}.data;
|
||
|
|
f = [f;fi(:)];
|
||
|
|
else
|
||
|
|
error('Only linear element-wise inequalities can be reduced')
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
if ~islinear(F)
|
||
|
|
error('Only linear element-wise inequalities can be reduced')
|
||
|
|
end
|
||
|
|
|
||
|
|
B = full(getbase(f));
|
||
|
|
P = polytope(-B(:,2:end),B(:,1));
|
||
|
|
|
||
|
|
x_vars = getvariables(F);
|
||
|
|
x = recover(x_vars);
|
||
|
|
|
||
|
|
H = get(P,'H');
|
||
|
|
K = get(P,'K');
|
||
|
|
|
||
|
|
F = (H*x <= K);
|