38 lines
838 B
Matlab
Executable File
38 lines
838 B
Matlab
Executable File
function F = replace(F,X,W,expand)
|
|
%REPLACE Substitutes variables in a constraint
|
|
%
|
|
%Z = REPLACE(F,X,W) Replaces any occurence of the SDPVAR object Y
|
|
% in the SDPVAR object X with the double W
|
|
%
|
|
% Example
|
|
% x = sdpvar(1,1);
|
|
% t = sdpvar(1,1);
|
|
% F = [1+t;1+x+t] >= 0;
|
|
% F = replace(F,x,2) generates the constraint [1+t;3+t] >= 0
|
|
|
|
if nargin<4
|
|
expand = 1;
|
|
end
|
|
|
|
if prod(size(W)) == 1
|
|
W = repmat(W,size(X));
|
|
end
|
|
|
|
keep = [];
|
|
F = flatten(F);
|
|
for i = 1:length(F.LMIid)
|
|
F.clauses{i}.data = replace(F.clauses{i}.data,X,W,expand);
|
|
if isempty(F.clauses{i}.data) | isa(F.clauses{i}.data,'double')
|
|
keep(i)=0;
|
|
else
|
|
keep(i)=1;
|
|
end
|
|
end
|
|
|
|
F.clauses = {F.clauses{find(keep)}};
|
|
|
|
% Get new identifiers
|
|
F.LMIid = [];
|
|
for i = 1:length(F.clauses)
|
|
F.LMIid = [F.LMIid yalmip('lmiid')];
|
|
end |