source: proiecte/pmake3d/make3d_original/Make3dSingleImageStanford_version0.1/third_party/opt/yalmip/operators/sdpfun.m @ 37

Last change on this file since 37 was 37, checked in by (none), 14 years ago

Added original make3d

File size: 2.1 KB
Line 
1function varargout = sdpfun(varargin)
2%SDPFUN Gateway to general functions on SDPVAR variables (overloaded)
3
4% Author Johan Löfberg
5% $Id: sdpfun.m,v 1.2 2006/09/08 08:52:12 joloef Exp $
6
7switch class(varargin{1})
8
9    case {'struct','double'} % What is the numerical value of this argument (needed for displays etc)
10        % SHOULD NEVER HAPPEN, THIS SHOULD BE CAUGHT BY BUILT-IN
11        varargout{1} = feval(varargin{end},varargin{1:end-1});
12
13    case 'sdpvar' % Overloaded operator for SDPVAR objects. Pass on args and save them.
14        % try to figure out size of expected output (many->1 or many->many
15        varargin_copy = varargin;
16        varargin_copy{1} = zeros(size(varargin_copy{1},1),size(varargin_copy{1},2));
17        output = feval(varargin_copy{end},varargin_copy{1:end-1});
18        if prod(size(output)) == 1
19            % MANY -> 1
20            varargout{1} = yalmip('addEvalVariable',mfilename,varargin{:});
21        else   
22            % MANY -> MANY
23            y = [];
24            [n,m] = size(varargin{1});
25            varargin{1} = varargin{1}(:);
26            for i = 1:length(varargin{1})
27                varargin_copy = varargin;
28                varargin_copy{1} = varargin_copy{1}(i);
29                y = [y;yalmip('addEvalVariable',mfilename,varargin_copy{:})];
30            end
31            varargout{1} = reshape(y,n,m);
32        end
33
34    case 'char' % YALMIP sends 'model' when it wants the epigraph or hypograph
35        switch varargin{1}
36
37            case {'graph','milp'}
38                t = varargin{2};
39                X = varargin{3};
40
41                % This is different from so called extended operators
42                % Just do it!
43                F = SetupEvaluationVariable(varargin{:});
44
45                % Let YALMIP know about convexity etc
46                varargout{1} = F;
47                varargout{2} = struct('convexity','milp','monotonicity','milp','definiteness','milp');
48                varargout{3} = X;
49            otherwise
50                error('SDPVAR/SDPFUN called with CHAR argument?');
51        end
52    otherwise
53        error('SDPVAR/SDPFUN called with CHAR argument?');
54end
Note: See TracBrowser for help on using the repository browser.