?? sign.m
字號:
function varargout = norm(varargin)
%SIGN (overloaded)
% Author Johan L鰂berg
% $Id: sign.m,v 1.1 2006/08/10 18:00:22 joloef Exp $
%% ***************************************************
% This file defines a nonlinear operator for YALMIP
%
% It can take three different inputs
% For DOUBLE inputs, it returns standard double values
% For SDPVAR inputs, it generates an internal variable
%
% When first input is 'model' it returns the graph
% in the first output and structure describing some
% properties of the operator.
%% ***************************************************
switch class(varargin{1})
case 'double' % What is the numerical value of this argument (needed for displays etc)
% SHOULD NEVER HAPPEN, THIS SHOULD BE CAUGHT BY BUILT-IN
error('Overloaded SDPVAR/NORM CALLED WITH DOUBLE. Report error')
case 'sdpvar' % Overloaded operator for SDPVAR objects. Pass on args and save them.
if length(varargin{1}) == 1
varargout{1} = yalmip('addextendedvariable',mfilename,varargin{1});
else
y = [];
n = size(varargin{1},1);
m = size(varargin{1},2);
varargin{1} = reshape(varargin{1},n*m,1);
for i = 1:prod(size(varargin{1}))
inparg = extsubsref(varargin{1},i);
if isa(inparg,'double')
y = sign(inparg);
else
y = [y yalmip('addextendedvariable',mfilename,inparg)];
end
end
y = reshape(y,n,m);
varargout{1} = y;
end
case 'char' % YALMIP sends 'model' when it wants the epigraph or hypograph
switch varargin{1}
case 'graph'
t = varargin{2};
X = varargin{3};
% No linear model available
varargout{1} = [];
varargout{2} = [];
varargout{3} = [];
case 'milp'
t = varargin{2};
X = varargin{3};
p = varargin{4};
d = binvar(1,1);
[M,m] = derivebounds(X);
F = set([]);
F = set(X > d*m) + set(-2*d+1 <= t <= 1);
F = set(X < (1-d)*M) + set(-1 <= t <= -1 + 2*(1-d));
varargout{1} = F;
varargout{2} = struct('convexity','milp','monotonicity','milp','definiteness','positive');
varargout{3} = X;
otherwise
error('SDPVAR/NORM called with CHAR argument?');
end
otherwise
error('Strange type on first argument in SDPVAR/NORM');
end
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -