source: proiecte/pmake3d/make3d_original/Make3dSingleImageStanford_version0.1/third_party/opt/yalmip/extras/@ncvar/nnz.m @ 37

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

Added original make3d

File size: 1.5 KB
Line 
1function varargout = nnz(varargin)
2%NNZ (overloaded)
3%
4%    n = nnz(X)
5%
6% The NNZ operator is implemented using the concept of nonlinear operators
7% in YALMIP. NNZ(X) creates a new so called derived variable that can be
8% treated as any other variable in YALMIP. When SOLVESDP is issued,
9% logic constraints are added to the problem to model the NNZ operator.
10
11% Author Johan Löfberg
12% $Id: nnz.m,v 1.1 2006/08/10 18:00:21 joloef Exp $
13
14switch class(varargin{1})
15
16    case 'sdpvar'
17        % Simple binary vector?
18        if all(ismember(getvariables(varargin{1}),yalmip('binvariables')))
19            if is(varargin{1},'lpcone')
20                varargout{1} = sum(reshape(varargin{1},prod(size(varargin{1})),1));
21                return
22            end
23        end
24        % Nope, more advanced variable.
25        varargout{1} = yalmip('addextendedvariable','nnz',varargin{:});
26
27    case 'char'
28        z = varargin{2};
29        x = varargin{3};
30        switch varargin{1}
31            case 'graph'
32                F = nnz_internal(z,x,0);
33                properties = struct('convexity','convex','monotonicity','none','definiteness','none');
34            case 'milp'
35                F = nnz_internal(z,x,1);
36                properties = struct('convexity','milp','monotonicity','milp','definiteness','milp');
37            otherwise
38                error('Unexpected call to NNZ OPERATOR')
39        end
40        varargout{1} = F;
41        varargout{2} = properties ;
42        varargout{3} = x;
43    otherwise
44end
Note: See TracBrowser for help on using the repository browser.