Dynamic-Calibration/utils/YALMIP-master/@sdpvar/pwadynamics.m

55 lines
1.5 KiB
Mathematica
Raw Normal View History

2019-12-18 11:25:45 +00:00
function varargout=sort(varargin)
%SORT (overloaded)
%
% [t,loc] = sort(x)
%
% The variable t will be the sorted version of x.
%
% SORT is implemented in the nonlinear operator framework using a big-M
% model.
switch class(varargin{1})
case 'double'
error('Overloaded SDPVAR/SORT CALLED WITH DOUBLE. Report error')
case 'sdpvar' % Overloaded operator for SDPVAR objects. Pass on args and save them.
if 0
error('')
end
y = [];
update = varargin{1};
for j = 1:length(update)
y = [y;yalmip('define',mfilename,varargin{:},j)];
end
varargout{1} = y;
case 'char' % YALMIP send 'graph' when it wants the epigraph or hypograph
switch varargin{1}
case {'milp','graph'}
% Description using epigraphs
t = varargin{2};
X = varargin{3};
% Call external to allow subsrefs in classs
[F,vars] = pwadynamics_internal(t,varargin{3:end-1});
varargout{1} = F;
varargout{2} = struct('convexity','milp','monotonicity','milp','definiteness','milp');
varargout{3} = X;
% Inofficial way to model several nonlinear variables in
% one call
varargout{2}.models = vars;
otherwise
error('SDPVAR/SORT called with CHAR argument?');
end
otherwise
error('Strange type on first argument in SDPVAR/SORT');
end