source: proiecte/pmake3d/make3d_original/Make3dSingleImageStanford_version0.1/third_party/opt/yalmip/extras/@ncvar/degree.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 deg=degree(p,y,e)
2%DEGREE Polynomial degree
3%
4% DEG = DEGREE(p,x,e)
5%
6% p : SDPVAR object.
7% x : Degree w.r.t linear SDPVAR objects, can be [].
8
9
10% e : If e=1, returns degree of each element in p
11%
12% Examples
13% x1 = sdpvar(1,1);x2 = sdpvar(1,1);
14% p = [x1;x1*x2+x2^2];
15%
16% degree(p) returns 2
17%
18% degree(p,x1) returns 1
19%
20% degree(p,[x1 x2]) returns [1 2]
21%
22% degree(p,[x1 x2],1) returns [1 0;1 2]
23%
24% degree(p,[],1) returns [1;3]
25
26% Author Johan Löfberg
27% $Id: degree.m,v 1.1 2006/08/10 18:00:19 joloef Exp $ 
28
29
30if isa(p,'double')
31    if nargin==1
32        deg = 0;
33    else
34        deg = zeros(1,length(y));
35    end
36    return
37end
38
39if nargin<2
40    y = recover(depends(p));
41end
42
43if nargin<3 | (nargin==3 & e==0)
44    exponent_p = exponents(p,y);
45    switch nargin
46        case 1
47            deg = full(max(sum(exponent_p,2)));
48        case {2,3}
49            deg = full(max(exponent_p,[],1));
50        otherwise
51            error('Too many arguments. Wadda ya mean?')
52    end
53else
54    p = p(:);
55    if isempty(y)
56        yy = recover(depends(p));
57    else
58        yy = y;
59    end
60   
61    for i = 1:length(p)
62        z.type = '()';
63        z.subs{1} = i;
64        exponent_p = exponents(subsref(p,z),yy);       
65        switch nargin
66            case 1
67                deg(i,:) = full(max(sum(exponent_p,2)));
68            case {2,3}
69                deg(i,:) = full(max(exponent_p,[],1));
70            otherwise
71               error('Too many arguments. Wadda ya mean?')
72        end
73    end
74    if isempty(y)
75        deg = sum(deg,2);
76    end
77end
Note: See TracBrowser for help on using the repository browser.