30 lines
801 B
Matlab
Executable File
30 lines
801 B
Matlab
Executable File
function varargout = or(varargin)
|
|
%OR (overloaded)
|
|
|
|
% Models OR using a nonlinear operator definition
|
|
switch class(varargin{1})
|
|
case 'char'
|
|
z = varargin{2};
|
|
X = varargin{3};
|
|
Y = varargin{4};
|
|
|
|
F = ([]);
|
|
x = binvar(1,1);
|
|
F = F + (implies_internal(x,X));
|
|
y = binvar(1,1);
|
|
F = F + (implies_internal(y,Y));
|
|
|
|
xy = [x y];
|
|
varargout{1} = F + (sum(xy) >= 1);
|
|
varargout{2} = struct('convexity','none','monotonicity','exact','definiteness','none','extra','marker');
|
|
varargout{3} = recover(depends(F));
|
|
|
|
case {'lmi'}
|
|
x = varargin{1};
|
|
y = varargin{2};
|
|
varargout{1} = (yalmip('define','lmior',varargin{:}) == 1);
|
|
|
|
otherwise
|
|
end
|
|
|
|
end |