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

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

Added original make3d

File size: 4.1 KB
Line 
1function YESNO = is(F,property)
2%IS   Check property of constraint.
3%   d = IS(x,property) returns 1 if 'property' holds
4%
5%   Properties possible to test are: 'elementwise', 'sdp',
6%   'socc', 'equality', 'lmi', 'linear', 'kyp', 'sos'
7
8% Author Johan Löfberg
9% $Id: is.m,v 1.16 2006/08/08 12:37:01 joloef Exp $
10
11if isempty(F.clauses)
12    YESNO = 0;
13else
14    %   for i = 1:length(F.clauses)
15    %       Fi = F.clauses{i};
16    YESNO=zeros(length(F.clauses),1);
17    switch property
18        case 'equality'
19            for i = 1:length(F.clauses)
20                Fi = F.clauses{i};
21                YESNO(i,1) = (Fi.type==3);
22            end
23        case {'element-wise','elementwise'}
24            for i = 1:length(F.clauses)
25                Fi = F.clauses{i};
26                YESNO(i,1) = (Fi.type==2);
27            end
28        case {'socc','socp'}
29            for i = 1:length(F.clauses)
30                Fi = F.clauses{i};
31                YESNO(i,1) = (Fi.type==4);
32            end
33        case 'sdp'
34            for i = 1:length(F.clauses)
35                Fi = F.clauses{i};
36                YESNO(i,1) = Fi.type==1;
37            end
38        case 'lmi'
39            for i = 1:length(F.clauses)
40                Fi = F.clauses{i};
41                YESNO(i,1) = full((((Fi.type==1) | (Fi.type==9)) | ((Fi.type==2) & (prod(size(Fi.data))==1))) & (islinear(Fi.data)));
42            end
43        case 'linear'
44            for i = 1:length(F.clauses)
45                Fi = F.clauses{i};
46                YESNO(i,1) = islinear(Fi.data);
47            end
48        case 'kyp'
49            for i = 1:length(F.clauses)
50                Fi = F.clauses{i};
51                YESNO(i,1) = (Fi.type==9);
52            end
53        case 'sos'
54            for i = 1:length(F.clauses)
55                Fi = F.clauses{i};
56                YESNO(i,1) = (Fi.type==11);
57            end
58        case 'eig'
59            YESNO(i,1) = (Fi.type==10);
60        case 'sigmonial'
61            for i = 1:length(F.clauses)
62                Fi = F.clauses{i};
63                monomtable = yalmip('monomtable');
64                monomtable = monomtable(getvariables(Fi.data),:);
65                YESNO(i,1) = any(find(any(0>monomtable,2) | any(monomtable-fix(monomtable),2)));
66            end
67        case 'binary'
68            for i = 1:length(F.clauses)
69                Fi = F.clauses{i};
70                YESNO(i,1) = Fi.type ==  8;
71            end
72        case 'integer'
73            for i = 1:length(F.clauses)
74                Fi = F.clauses{i};
75                YESNO(i,1) = Fi.type ==  7;
76            end
77       case 'parametric'
78            for i = 1:length(F.clauses)
79                Fi = F.clauses{i};
80                YESNO(i,1) = Fi.type ==  13;
81            end           
82        case 'uncertain'
83            for i = 1:length(F.clauses)
84                Fi = F.clauses{i};
85                YESNO(i,1) = Fi.type ==  15;
86            end
87           
88        case 'logic'
89            allextvars = yalmip('extvariables');
90            if isempty(allextvars)
91                YESNO(i,1) = 0;
92            else
93                for i = 1:length(F.clauses)
94                    Fi = F.clauses{i};
95                    xi = getvariables(Fi.data);
96                    lgc = find(ismembc(xi,allextvars));
97                    if ~isempty(lgc)
98                        for j = lgc
99                            variable = xi(j);
100                            extstruct = yalmip('extstruct',11);
101                            if isequal(extstruct.fcn,'or') | isequal(extstruct.fcn,'and')
102                                YESNO(i,1) = 1;
103                                break
104                            end
105                        end
106                    end
107                end               
108            end
109        case 'lowrank'
110            YESNO(i,1) = Fi.type == 14;
111        case 'complex'
112            for i = 1:length(F.clauses)
113                Fi = F.clauses{i};
114                YESNO(i,1) = is(Fi.data,'complex');
115            end
116        case 'real'
117            for i = 1:length(F.clauses)
118                Fi = F.clauses{i};
119                YESNO(i,1) = is(Fi.data,'real');
120            end
121        otherwise
122            YESNO = error('Huh?');
123    end
124    %  end
125end
126
127YESNO = full(YESNO);
Note: See TracBrowser for help on using the repository browser.