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

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

Added original make3d

File size: 1.4 KB
Line 
1function res = isrelaxfeasible(F)
2
3
4% Author Johan Löfberg
5% $Id: isrelaxfeasible.m,v 1.3 2005/02/04 10:10:27 johanl Exp $
6
7% Check if solution avaliable
8currsol = evalin('caller','sdpvar(''getSolution'')');
9if isempty(currsol)
10    disp('No solution available.')
11    return
12end
13
14nlmi = size(F.clauses,2);
15spaces = ['                                    '];
16if (nlmi == 0) & (neq == 0)
17    disp('empty LMI')
18    return
19end
20
21lmiinfo{1} = 'LMI';
22lmiinfo{2} = 'Element-wise';
23lmiinfo{3} = 'Equality constraint';
24lmiinfo{4} = 'Second order cone constraint';
25lmiinfo{5} = 'Rotated Lorentz constraint';
26
27header = {'ID','Constraint','Type','Residual (should be > 0)','Tag'};
28
29if nlmi>0
30    for j = 1:nlmi
31        F0 = relaxdouble(F.clauses{j}.data);
32        if any(isnan(F0(:)))
33            res = NaN;
34        else
35            switch F.clauses{j}.type
36                case 1
37                    res = min(eig(F0));
38                case 2
39                    res = min(min(F0));
40                case 3
41                    res = -max(max(abs(F0)));
42                case 4
43                    res = F0(1)-norm(F0(2:end));
44                case 5
45                    res = 2*F0(1)*F0(2)-norm(F0(3:end))^2
46            end
47        end
48        data{j,1} = ['#' num2str(j)];
49        data{j,2} = F.clauses{j}.symbolic;
50        data{j,3} = lmiinfo{F.clauses{j}.type};
51        data{j,4} = res;
52        data{j,5} = F.clauses{j}.handle;
53    end
54end
55
56res = [data{:,4}];
Note: See TracBrowser for help on using the repository browser.