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

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