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

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

Added original make3d

File size: 3.7 KB
Line 
1function sys = pretty(F)
2% PRETTY Pretty print an SET object
3%    PRETTY(F) tries to print the SET F in a format that
4%    resembles type-set mathematics.
5%
6% Requires the Symbolic Math Toolbox
7 
8% Author Johan Löfberg
9% $Id: pretty.m,v 1.3 2005/02/04 10:10:27 johanl Exp $
10   
11error('Pretty is obsolte and no longer supported')
12
13  nlmi = size(F.clauses,2);
14 
15  spaces = ['                                    '];
16  if (nlmi == 0) & (neq == 0)
17    disp('empty LMI')
18    return
19  end
20 
21  lmiinfo{1} = 'Matrix inequality';
22  lmiinfo{2} = 'Element-wise inequality';
23  lmiinfo{3} = 'Equality constraint';
24  lmiinfo{4} = 'Second order cone constraint';
25 
26  % Needed for formating
27  infolen    = max(cellfun('length',lmiinfo));
28 
29 
30  % Check if there are any handles, sizes of strings
31  max_ns = 0;
32  max_nh = 0;
33  for i = 1:nlmi
34    max_ns = max(max_ns,length(F.clauses{i}.symbolic));
35    max_nh = max(max_nh,length(F.clauses{i}.handle));
36  end
37 
38  ns = min(40,max_ns);
39  nh = min(40,max_nh);
40  nt = infolen+3;
41  nh = 40;
42 
43  if nlmi>0
44    nn = ceil(log10(nlmi+1)+1);
45    disp('*************************');
46    disp('Inequality constraints');
47    disp('*************************');
48    for i = 1:nlmi
49        type     = lmiinfo{F.clauses{i}.type};
50        handle   = truncstring(F.clauses{i}.handle,nh);
51        number   = strjust(fillstring(['#' num2str(i)],nn),'right');
52        if isempty(handle)
53          infostr = sprintf('%s   %s',number,type);
54        else
55          infostr = sprintf('%s   %s    (%s)',number,type,handle);
56        end
57        disp(infostr);
58        prettyhack(F.clauses{i}.symbolic);
59        disp(' ' );
60    end
61    disp(' ');
62  else
63    disp('*************************'); 
64    disp('No inequality constraints');
65    disp('*************************');
66  end
67 
68 
69function x= truncstring(x,n)
70  if length(x) > n
71    x = [x(1:n-3) '...'];
72  end
73 
74function x = fillstring(x,n)
75  x = [x blanks(n-length(x))];
76 
77  % Works for some type of problems
78function prettyhack(F)
79 
80% Some hacks to make it work
81  Y = F;
82  F = strrep(F,'''','^T');
83  F = strrep(F,'diag','Diag');
84  F = strrep(F,'min','Min');
85  F = strrep(F,'max','Max');
86 
87  try
88    TypeofConstraint = 0; 
89    delimiters = {'.<','.>','<.','>.','<','>','=',''}; 
90    delindex = 0;indtodel = [];
91    while isempty(indtodel) & (delindex<=7)
92      delindex = delindex+1;
93      indtodel = findstr(F,delimiters{delindex});   
94    end
95    switch delindex
96     case 5 %<
97      TypeofConstraint = 1;
98      ind_start =  indtodel-1;
99      ind_end   =  indtodel+1;
100      REVERSE   = 1;
101      dell = '<';
102     case 6 %>
103      TypeofConstraint = 1;
104      ind_start =  indtodel-1;
105      ind_end   =  indtodel+1;
106      REVERSE   = 0;
107      dell = '>';
108     case 1 %.<
109      TypeofConstraint = 2;
110      ind_start =  indtodel-1;
111      ind_end   =  indtodel+2;
112      REVERSE   = 1;
113      dell = '<';
114     case 2 %.>
115      TypeofConstraint = 2;
116      ind_start =  indtodel-1;
117      ind_end   =  indtodel+2;
118      REVERSE   = 0;
119      dell = '>';
120     case 7%=
121      TypeofConstraint = 3;
122      ind_start = indtodel-1;
123      ind_end   = indtodel+1;
124      REVERSE   = 0;
125      dell = '=';
126     case {3,4}
127      error('Incorrect argument. Perhaps you mean .> or .<');   
128     otherwise
129      error('Incorrect argument. Could not find <=>.>.<')
130    end
131   
132    LeftHand   = char(sym(F(1:ind_start)));
133    RightHand  = char(sym(F(ind_end:end)));
134   
135    maplemex('interface(prettyprint=true);');
136    disp(' ')
137    r = maplemex(['print(' LeftHand ' ' dell ' ' RightHand ');']);
138    if ~isempty(r)
139      disp(' ')
140      disp([strjust(fillstring(Y,79),'center') ' (cannot be displayed in Maple)'])
141    end
142  catch
143    disp(' ');
144    disp([strjust(fillstring(Y,79),'center') ' (cannot be displayed in Maple)'])
145  end
146  maplemex('interface(prettyprint=false);');
147 
Note: See TracBrowser for help on using the repository browser.