📄 lmior.m
字号:
function varargout = lmior(varargin)
%OR (overloaded)
% Author Johan L鰂berg
% $Id: lmior.m,v 1.3 2007/07/29 17:32:28 joloef Exp $
% Models OR using a nonlinear operator definition
switch class(varargin{1})
case 'char'
z = varargin{2};
allextvars = yalmip('extvariables');
X = {};
for i = 3:nargin
Xtemp = expandor(varargin{i},allextvars);
for j = 1:length(Xtemp)
X{end + 1} = Xtemp{j};
end
end
F = set([]);
x = binvar(length(X),1);
for i = 1:length(X)
F = F + set(implies_internal(extsubsref(x,i),X{i}));
end
varargout{1} = F + set(sum(x) >= 1);
varargout{2} = struct('convexity','none','monotonicity','none','definiteness','none','extra','marker','model','integer');
varargout{3} = recover(depends(F));
case {'lmi'}
x = varargin{1};
y = varargin{2};
varargout{1} = set(yalmip('define','lmior',varargin{:}) == 1);
otherwise
end
function x = expandor(x,allextvars)
if length(getvariables(x))>1
x = {x};
return;
end
xmodel = yalmip('extstruct',getvariables(x));
if ~isempty(xmodel) & isequal(xmodel.fcn,'lmior')
x1 = xmodel.arg{1};
x2 = xmodel.arg{2};
if ismembc(getvariables(x1),allextvars)
x1 = expandor(x1,allextvars);
else
x1 = {x1};
end
if ismembc(getvariables(x2),allextvars)
x2 = expandor(x2,allextvars);
else
x2 = {x2};
end
x = {x1{:},x2{:}};
else
x = {x};
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -