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

📄 sdmdemo.m

📁 这是matlab解2阶锥工具包
💻 M
📖 第 1 页 / 共 2 页
字号:
function sdmdemo% SDMDEMO - demonstration of SeDuMi Interface 1.04%%   This file is part of SeDuMi Interface 1.04 (JUL2002)%   Last update : 23rd September 2002%   Copyright (C) 2002 Dimitri Peaucelle & Krysten Taitz%   LAAS-CNRS, Toulouse, France% %   This program is free software; you can redistribute it and/or modify%   it under the terms of the GNU General Public License as published by%   the Free Software Foundation; either version 2 of the License, or%   (at your option) any later version.% %   This program is distributed in the hope that it will be useful,%   but WITHOUT ANY WARRANTY; without even the implied warranty of%   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the%   GNU General Public License for more details.% %   You should have received a copy of the GNU General Public License%   along with this program; if not, write to the Free Software%   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. %#external  header='Choose a demo';  item1='example of the User''s guide';  item2='a H2/Hinfinity state feedback example';  item = menu(header,item1,item2);  next = sprintf('%s',' -- type key to continue -- ');  dotline = '------------------------------------------------------';  switch item   case 1    clc    fprintf(['This demo is conceived to help the reader of the user''s' ...	     ' guide\n No comments are added to the matlab commands']);    fprintf('\n%s',next);pause;fprintf('\r');    clc    fprintf('#####################################\n');      fprintf('# 2.1   # LMC problem: an sdmpb object\n');      fprintf('#####################################\n\n');      do = sprintf('quiz = sdmpb(''Optimal Hinfty State-Feedback Synthesis'')');    fprintf('%s\n',do);eval(do);    fprintf('\n%s',next);pause;fprintf('\r                                      \n');    do = sprintf('whos quiz');    fprintf('%s\n',do);eval(do);    fprintf('\n%s',next);pause;fprintf('\r                                      \n');    do = sprintf(['n=4; m=1; q=1; p=2;\n', ...		  'A = [1 0 0 -1 ; 0 -1 1 0 ; -1 0 1 0 ; 0 -1 0 1 ];\n', ...		  'Bu = [ 1 ; 0 ; 0 ; 0 ];\n', ...		  'Bw = [ 0 ; 1 ; 0 ; 0 ];\n', ...		  'Cz = [ 0 0 0 1 ; 1 0 0 1 ];\n', ...		  'Dzu = [ 1 ; 0 ];\n']);    fprintf('%s\n',do);eval(do);    fprintf('\n%s',next);pause;fprintf('\r                                      \n');    clc    fprintf('#####################################\n');      fprintf('# 2.2   # Defining variables: sdmvar\n');      fprintf('#####################################\n\n');      do = sprintf(['[quiz, Yindex] = sdmvar(quiz, m, n, ''Y'');\n', ...		  'quiz']);    fprintf('%s\n',do);eval(do);    fprintf('\n%s',next);pause;fprintf('\r                                      \n');    do = sprintf(['[quiz, gindex] = sdmvar(quiz, 1, 1, ''gamma^2'');\n', ...		  '[quiz, Qindex] = sdmvar(quiz, n, ''s'', ''Q'');\n', ...		  'quiz']);    fprintf('%s\n',do);eval(do);    fprintf('\n%s',next);pause;fprintf('\r                                      \n');    do = sprintf(['get(quiz, ''varnb'')']);    fprintf('%s\n',do);eval(do);    fprintf('\n%s',next);pause;fprintf('\r                                      \n');    do = sprintf(['get(quiz, ''varname'', gindex)']);    fprintf('%s\n',do);eval(do);    fprintf('\n%s',next);pause;fprintf('\r                                      \n');    do = sprintf(['get(quiz, ''vardec'', Qindex)']);    fprintf('%s\n',do);eval(do);    fprintf('\n%s',next);pause;fprintf('\r                                      \n');    clc    fprintf('###################################################\n');      fprintf('# 2.3   # Defining an inequality constraint: sdmlmi\n');      fprintf('###################################################\n\n');      do = sprintf(['[quiz, lmi1index] = sdmlmi( quiz,  [n], ''Q>0'');\n', ...		  '[quiz, lmi2index] = sdmlmi(quiz, [n p], ''Hinfty state-feedback'');\n', ...		  'quiz']);    fprintf('%s\n',do);eval(do);    fprintf('\n%s',next);pause;fprintf('\r                                      \n');    do = 'get(quiz, ''ineqnb'')';    fprintf('%s\n',do);eval(do);    fprintf('\n%s',next);pause;fprintf('\r                                      \n');    do = 'get(quiz, ''ineqname'', lmi2index)';    fprintf('%s\n',do);eval(do);    fprintf('\n%s',next);pause;fprintf(['\r                            \n']);    do = 'get(quiz, ''ineqdim'', lmi2index)';    fprintf('%s\n',do);eval(do);    fprintf('\n%s',next);pause;fprintf('\r                                      \n');    clc    fprintf('#########################################################\n');      fprintf('# 2.4   # Add a term to an inequality constraint: sdmineq\n');      fprintf('#########################################################\n\n');      do = sprintf(['L = Cz;\n', ...		  'R = 1;\n', ... 		  'quiz = sdmineq(quiz, [lmi2index 2 1], Qindex, L, R);       \n\n', ...		  'L = Bw;\n', ...		  'R = 0.5*L'';\n', ...		  'quiz = sdmineq(quiz, [lmi2index 1 1], 0, L, R); \n\n', ...		  'quiz = sdmineq(quiz, [lmi2index 1 1], Qindex,    A, 1);\n\n',...		  'quiz = sdmineq(quiz, [lmi2index 1 1], Yindex,   Bu, 1);\n\n',...		  'quiz = sdmineq(quiz, [lmi2index 2 1], Yindex,  Dzu, 1);\n\n',...		  'quiz = sdmineq(quiz, [lmi2index 2 2], gindex, -0.5, 1);\n\n', ...		  		  'quiz = sdmineq(quiz, [lmi1index 1 1], Qindex, -0.5, 1);']);    fprintf('%s\n',do);eval(do);    fprintf('\n%s',next);pause;fprintf('\r                                      \n');    clc    fprintf('####################################################\n');      fprintf('# 2.5   # Add a linear term to the objective: sdmobj\n');      fprintf('####################################################\n\n');      do = sprintf(['quiz = sdmobj(quiz, gindex, -1, 1, ''-gamma^2'');\n', ...		  'quiz']);    fprintf('%s\n',do);eval(do);    fprintf('\n%s',next);pause;fprintf('\r                                      \n');    do = 'get(quiz,''objname'')';    fprintf('%s\n',do);eval(do);    fprintf('\n%s',next);pause;fprintf('\r                                      \n');    clc    fprintf('#####################################\n');      fprintf('# 2.6   # Solve an LMC problem: sdmsol\n');      fprintf('#####################################\n\n');      do = sprintf(['quiz = sdmsol(quiz);']);    fprintf('%s\n',do);eval(do);    fprintf('\n%s',next);pause;fprintf('\r                                      \n');    do = 'quiz';    fprintf('%s\n',do);eval(do);    fprintf('\n%s',next);pause;fprintf('\r                                      \n');    do = 'get(quiz, ''feas'')';    fprintf('%s\n',do);eval(do);    fprintf('\n%s',next);pause;fprintf('\r                                      \n');    clc    fprintf('##########################################\n');      fprintf('# 2.7   # Extracting the computed solution\n');      fprintf('##########################################\n\n');      do = sprintf(['g2_opt = get(quiz, ''varvalue'', gindex)']);    fprintf('%s\n',do);eval(do);    fprintf('\n%s',next);pause;fprintf('\r                                      \n');    do = 'Y_opt = quiz(Yindex)';    fprintf('%s\n',do);eval(do);    fprintf('\n%s',next);pause;fprintf('\r                                      \n');    do = 'get(quiz,''objopt'')';    fprintf('%s\n',do);eval(do);    fprintf('\n%s',next);pause;fprintf('\r                                      \n');    clc    fprintf('###########################################\n');      fprintf('# 2.8   # Analysis of the computed solution\n');      fprintf('###########################################\n\n');      do = 'get(quiz, ''ineqmeig'', lmi1index)';    fprintf('%s\n',do);eval(do);    fprintf('\n%s',next);pause;fprintf('\r                                      \n');    do = 'quiz';    fprintf('%s\n',do);eval(do);    fprintf('\n%s',next);pause;fprintf('\r                                      \n');    clc    fprintf('######################################\n');      fprintf('# 3.1   # Structured variables: sdmvar\n');      fprintf('######################################\n\n');      do = sprintf(['[quiz, Dindex] = sdmvar(quiz, 3i, ''d'', ''D : diagonal'');\n',...		 'num2str(quiz{Dindex})']);    fprintf('%s\n',do);eval(do);    fprintf('\n%s',next);pause;fprintf('\r                                      \n');    do = sprintf(['[quiz, Gindex] = sdmvar(quiz, 3, ''as'', ''G'');\n',...		  'quiz{Gindex}']);    fprintf('%s\n',do);eval(do);    fprintf('\n%s',next);pause;fprintf('\r                                      \n');    do = sprintf(['[quiz, Hindex] = sdmvar(quiz, 2i, ''h'', ''H'');\n',...		  'num2str(quiz{Hindex})']);    fprintf('%s\n',do);eval(do);    fprintf('\n%s',next);pause;fprintf('\r                                      \n');    do = sprintf(['[quiz, Jindex] = sdmvar(quiz, 3i, ''ah'', ''J'');\n',...		  'num2str(quiz{Jindex})']);    fprintf('%s\n',do);eval(do);    fprintf('\n%s',next);pause;fprintf('\r                                      \n');    do = sprintf(['Ddec = quiz{Dindex};\n',...		  'Ddecbar = conj(Ddec);\n',...		  'Gdec = quiz{Gindex};\n',...		  'Fdec = [ Ddecbar , Gdec ];\n',...		  '[quiz, Findex] = sdmvar(quiz, Fdec, ''st'', ''[D, G]'');\n',...		  'num2str(quiz{Findex})']);    fprintf('%s\n',do);eval(do);    fprintf('\n%s',next);pause;fprintf('\r                                      \n');    do = sprintf(['get(quiz, ''vardecnb'')']);    fprintf('%s\n',do);eval(do);    do = sprintf(['Kdec = [28+28i 0 -28-28i;30+30i 29 30-30i];\n',...		  '[quiz, Kindex] = sdmvar(quiz, Kdec, ''st'', ''K'');\n',...		  'num2str(quiz{Kindex})']);    fprintf('%s\n',do);eval(do);    fprintf('\n%s',next);pause;fprintf('\r                                      \n');    clc    fprintf('#################################################\n');      fprintf('# 3.3.1 # Defining an equality constraint: sdmlme\n');      fprintf('#################################################\n\n');      do = sprintf(['[quiz, lmeindex] = sdmlme(quiz, [2 1], [3 1], ''[K 0;0 Q11]=[H 0;0 conj(D11)-1+i]'');\n',...		 'quiz']);    fprintf('%s\n',do);eval(do);    do = 'get(quiz, ''eqnb'')';    fprintf('\n%s',next);pause;fprintf('\r                                      \n');    fprintf('%s\n',do);eval(do);    do = 'get(quiz, ''eqdimrow'', lmeindex)';    fprintf('%s\n',do);eval(do);    fprintf('\n%s',next);pause;fprintf('\r                                      \n');    do = 'get(quiz, ''eqdimcol'', lmeindex)';    fprintf('%s\n',do);eval(do);    fprintf('\n%s',next);pause;fprintf('\r                                      \n');    do = 'get(quiz, ''eqname'', lmeindex)';    fprintf('%s\n',do);eval(do);    fprintf('\n%s',next);pause;fprintf('\r                                      \n');    clc    fprintf('#####################################################\n');      fprintf('# 3.3.2 # Add a term to an equality constraint: sdmeq\n');      fprintf('#####################################################\n\n');      do = sprintf(['%%   ADVANCED USAGE USED AT THIS STEP\n\n',...		  'quiz = sdmeq(quiz, [ lmeindex 1 1],   Kindex);\n',...		  'quiz = sdmeq(quiz, [-lmeindex 1 1],   Hindex,         1,  [i i 0 ; 0 0 1]);\n',...		  'quiz = sdmeq(quiz, [-lmeindex 1 1],        0,         1, [2i i 0 ; 0 0 0]);\n',...		  'quiz = sdmeq(quiz, [ lmeindex 2 2],   Qindex, [1 0 0 0]);\n',...		  'quiz = sdmeq(quiz, [ lmeindex 2 2],        0,        -1,              1-i);\n',...		  'quiz = sdmeq(quiz, [-lmeindex 2 2], i*Dindex,   [1 0 0]);']);    fprintf('%s\n',do);eval(do);    fprintf('\n%s',next);pause;fprintf('\r                                      \n');    do = sprintf(['quiz = sdmsol(quiz)']);    fprintf('%s\n',do);eval(do);    fprintf('\n%s',next);pause;fprintf('\r                                      \n');    do = sprintf(['get(quiz, ''eqnorm'', lmeindex)\n',...		  'K_opt = quiz(Kindex)']);    fprintf('%s\n',do);eval(do);    fprintf('\n%s',next);pause;fprintf('\r                                      \n');    clc    fprintf('##############################################\n');      fprintf('# 3.5   # Set a value to some variable: sdmset\n');      fprintf('##############################################\n\n');      do = sprintf(['quiz = sdmset(quiz, gindex, 30);\n',...		  'quiz = sdmsol(quiz);']);    fprintf('%s\n',do);eval(do);    fprintf('\n%s',next);pause;fprintf('\r                                      \n');    do = 'quiz';    fprintf('%s\n',do);eval(do);    fprintf('\n%s',next);pause;fprintf('\r                                      \n');    do = 'quiz(gindex)';    fprintf('%s\n',do);eval(do);    fprintf('\n%s',next);pause;fprintf('\r                                      \n');    do = sprintf(['quiz = sdmset(quiz, Gindex, [0 -1 1 ; 1 0 2 ; -1 -2 0]);\n',...		  'quiz{Gindex}']);    fprintf('%s\n',do);eval(do);    fprintf('\n%s',next);pause;fprintf('\r                                      \n');    do = 'num2str(quiz{Findex})';    fprintf('%s\n',do);eval(do);    fprintf('\n%s',next);pause;fprintf('\r                                      \n');   case 2    next1= 'fprintf(''%s\n'',write);fprintf(''\n%s'',next);pause;';    next2 = 'clc;fprintf(''%s\n\n'',dotline);fprintf(''%s\n'',write);fprintf(''%s\n\n'',dotline);';    clc;fprintf('%s\n\n',dotline);    write=sprintf(['Consider the following LTI system \n\n',...		   '\t dx/dt = A .x + B1.w1 + B2.w2 + B .u\n',...		   '\t   z1  = C1.x + D1.w1         + E1.u\n',...		   '\t   z2  = C2.x                 + E2.u\n\n',...		   'with the following dimensions: \n\n',...

⌨️ 快捷键说明

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