[37] | 1 | function sys = display(X) |
---|
| 2 | %display Displays a SET object. |
---|
| 3 | |
---|
| 4 | % Author Johan Löfberg |
---|
| 5 | % $Id: display.m,v 1.9 2006/09/27 13:52:09 joloef Exp $ |
---|
| 6 | |
---|
| 7 | nlmi = size(X.clauses,2); |
---|
| 8 | |
---|
| 9 | if (nlmi == 0) |
---|
| 10 | disp('empty SET') |
---|
| 11 | return |
---|
| 12 | end |
---|
| 13 | |
---|
| 14 | lmiinfo{1} = 'Matrix inequality'; |
---|
| 15 | lmiinfo{2} = 'Element-wise'; |
---|
| 16 | lmiinfo{3} = 'Equality constraint'; |
---|
| 17 | lmiinfo{4} = 'Second order cone constraint'; |
---|
| 18 | lmiinfo{5} = 'Rotated Lorentz constraint'; |
---|
| 19 | lmiinfo{7} = 'Integrality constraint'; |
---|
| 20 | lmiinfo{8} = 'Binary constraint'; |
---|
| 21 | lmiinfo{9} = 'KYP constraint'; |
---|
| 22 | lmiinfo{10}= 'Eigenvalue constraint'; |
---|
| 23 | lmiinfo{11}= 'Sum-of-square constraint'; |
---|
| 24 | lmiinfo{12}= 'Logic constraint'; |
---|
| 25 | lmiinfo{13}= 'Parametric declaration'; |
---|
| 26 | lmiinfo{14}= 'Low-rank data declaration'; |
---|
| 27 | lmiinfo{15}= 'Uncertain declaration'; |
---|
| 28 | |
---|
| 29 | headers = {'ID','Constraint','Type','Tag'}; |
---|
| 30 | rankVariables = yalmip('rankvariables'); |
---|
| 31 | extVariables = yalmip('extvariables'); |
---|
| 32 | if nlmi>0 |
---|
| 33 | for i = 1:nlmi |
---|
| 34 | |
---|
| 35 | data{i,1} = ['#' num2str(i)]; |
---|
| 36 | data{i,2} = X.clauses{i}.symbolic; |
---|
| 37 | data{i,3} = lmiinfo{X.clauses{i}.type}; |
---|
| 38 | if length(getvariables(X.clauses{i}.data)) == 1 |
---|
| 39 | if any(ismember(getvariables(X.clauses{i}.data),rankVariables)) |
---|
| 40 | data{i,3} = 'Rank constraint'; |
---|
| 41 | end |
---|
| 42 | end |
---|
| 43 | |
---|
| 44 | if X.clauses{i}.type == 14 |
---|
| 45 | else |
---|
| 46 | classification = ''; |
---|
| 47 | if any(ismembc(getvariables(X.clauses{i}.data),yalmip('intvariables'))) |
---|
| 48 | classification = [classification ',integer']; |
---|
| 49 | end |
---|
| 50 | |
---|
| 51 | if size(X.clauses{i},2)>1 |
---|
| 52 | classification = [classification ',logic']; |
---|
| 53 | end |
---|
| 54 | |
---|
| 55 | linearbilinearquadraticsigmonial = is(X.clauses{i}.data,'LBQS'); |
---|
| 56 | if ~linearbilinearquadraticsigmonial(1) |
---|
| 57 | if linearbilinearquadraticsigmonial(4) |
---|
| 58 | classification = [classification ',sigmonial']; |
---|
| 59 | elseif linearbilinearquadraticsigmonial(2) |
---|
| 60 | classification = [classification ',bilinear']; |
---|
| 61 | elseif linearbilinearquadraticsigmonial(3) |
---|
| 62 | classification = [classification ',quadratic']; |
---|
| 63 | else |
---|
| 64 | classification = [classification ',polynomial']; |
---|
| 65 | end |
---|
| 66 | end |
---|
| 67 | |
---|
| 68 | data{i,4} = X.clauses{i}.handle; |
---|
| 69 | if ~isreal(X.clauses{i}.data) |
---|
| 70 | classification = [classification ',complex']; |
---|
| 71 | end |
---|
| 72 | %if ~isempty(intersect(getvariables(X.clauses{i}.data),extVariables)) |
---|
| 73 | if any(ismembc(getvariables(X.clauses{i}.data),extVariables)) |
---|
| 74 | classification = [classification ',derived']; |
---|
| 75 | end |
---|
| 76 | |
---|
| 77 | if length(classification)==0 |
---|
| 78 | else |
---|
| 79 | data{i,3} = [data{i,3} ' (' classification(2:end) ')']; |
---|
| 80 | end |
---|
| 81 | |
---|
| 82 | if ismembc(X.clauses{i}.type,[1 2 3 4 5 9]) |
---|
| 83 | data{i,3} = [data{i,3} ' ' num2str(size(X.clauses{i}.data,1)) 'x' num2str(size(X.clauses{i}.data,2))]; |
---|
| 84 | end |
---|
| 85 | end |
---|
| 86 | |
---|
| 87 | end |
---|
| 88 | end |
---|
| 89 | |
---|
| 90 | % If no tags, don't show... |
---|
| 91 | if length([data{:,4}])==0 |
---|
| 92 | headers = {headers{:,1:3}}; |
---|
| 93 | data = reshape({data{:,1:3}},length({data{:,1:3}})/3,3); |
---|
| 94 | end |
---|
| 95 | |
---|
| 96 | |
---|
| 97 | table('',headers,data) |
---|
| 98 | |
---|
| 99 | function x= truncstring(x,n) |
---|
| 100 | if length(x) > n |
---|
| 101 | x = [x(1:n-3) '...']; |
---|
| 102 | end |
---|
| 103 | |
---|
| 104 | function x = fillstring(x,n) |
---|
| 105 | x = [x blanks(n-length(x))]; |
---|
| 106 | |
---|