⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 display.m

📁 国外专家做的求解LMI鲁棒控制的工具箱,可以相对高效的解决LMI问题
💻 M
字号:
function sys = display(X)
%display           Displays a SET object.

% Author Johan L鰂berg
% $Id: display.m,v 1.6 2005/02/04 10:10:26 johanl Exp $

nlmi = size(X.clauses,2);

if (nlmi == 0)
    disp('empty SET')
    return
end

lmiinfo{1} = 'Matrix inequality';
lmiinfo{2} = 'Element-wise';
lmiinfo{3} = 'Equality constraint';
lmiinfo{4} = 'Second order cone constraint';
lmiinfo{5} = 'Rotated Lorentz constraint';
lmiinfo{7} = 'Integrality constraint';
lmiinfo{8} = 'Binary constraint';
lmiinfo{9} = 'KYP constraint';
lmiinfo{10}= 'Eigenvalue constraint';
lmiinfo{11}= 'Sum-of-square constraint';
lmiinfo{12}= 'Logic constraint';
lmiinfo{13}= 'Parametric definition';
lmiinfo{14}= 'Low-rank data declaration';

headers = {'ID','Constraint','Type','Tag'};
rankVariables = yalmip('rankvariables');
if nlmi>0
    for i = 1:nlmi
        
        data{i,1} = ['#' num2str(i)];
        data{i,2} = X.clauses{i}.symbolic;
        data{i,3} = lmiinfo{X.clauses{i}.type};
        if length(getvariables(X.clauses{i}.data)) == 1
            if any(ismember(getvariables(X.clauses{i}.data),rankVariables))
                 data{i,3} = 'Rank constraint';
            end
        end
        
        if X.clauses{i}.type == 14
        else
            if any(ismember(getvariables(X.clauses{i}.data),yalmip('intvariables')))
                data{i,3} = [data{i,3} ' (integer)'];
            end

            if size(X.clauses{i},2)>1
                data{i,3} = [data{i,3} ' (logic)'];
            end
            classification = '';
            
%             if ~islinear(X.clauses{i}.data)
%                 if is(X.clauses{i}.data,'sigmonial')
%                     classification = [classification 'sigmonial'];
%                 elseif is(X.clauses{i}.data,'bilinear')
%                     classification = [classification 'bilinear'];
%                 elseif is(X.clauses{i}.data,'quadratic')
%                     classification = [classification 'quadratic'];
%                 else
%                     classification = [classification 'polynomial'];
%                 end
%                 data{i,3} = [data{i,3} ' (' classification ')'];
%             end
            linearbilinearquadraticsigmonial = is(X.clauses{i}.data,'LBQS');
            if ~linearbilinearquadraticsigmonial(1)
                if linearbilinearquadraticsigmonial(4)
                    classification = [classification 'sigmonial'];
                elseif linearbilinearquadraticsigmonial(2)
                    classification = [classification 'bilinear'];
                elseif linearbilinearquadraticsigmonial(3)
                    classification = [classification 'quadratic'];
                else
                    classification = [classification 'polynomial'];
                end
                data{i,3} = [data{i,3} ' (' classification ')'];
            end
            

            data{i,4} = X.clauses{i}.handle;
            if ~isreal(X.clauses{i}.data)
                data{i,3} = [data{i,3} ' (complex)'];
            end

            if ismember(X.clauses{i}.type,[1 2 3 4 5 9])
                data{i,3} = [data{i,3} ' ' num2str(size(X.clauses{i}.data,1)) 'x' num2str(size(X.clauses{i}.data,2))];
            end
        end

    end
end

% If no tags, don't show...
if length([data{:,4}])==0
    headers = {headers{:,1:3}};
    data = reshape({data{:,1:3}},length({data{:,1:3}})/3,3);
end


table('',headers,data)

function x= truncstring(x,n)
if length(x) > n
    x = [x(1:n-3) '...'];
end

function x = fillstring(x,n)
x = [x blanks(n-length(x))];

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -