亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? progzos_code.m

?? 非線性系統工具箱,有很多函數可以直接調用!
?? M
字號:
% NelinSys - a program tool for analysis and synthesis of nonlinear control systems
%            based on MATLAB/Simulink 5.2
%
% (C) 2002-2005, Martin Ondera (eskimo@pobox.sk) (Martin.Ondera@stuba.sk)

% 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., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
%
% Please, see the LICENSE.TXT file to read the full license.

clear;

% V pripade viacerych moznosti rovnovaznych stavov sa bude pocitat s prvym z nich %
set(findobj(gcf,'Tag','ListboxRovnovs'),'Value',1);
vybr_ries = 1;

% Nacitanie symbolickych matic f(x), g(x) a h(x) %
F = get(findobj(gcf,'Tag','EditF'),'String');
G = get(findobj(gcf,'Tag','EditG'),'String');
H = get(findobj(gcf,'Tag','EditH'),'String');

n = size(sym(F));
n = n(1,1);

% Definicia symbolov pre stavove premenne %
for countr = 1 : n
   eval(sprintf('syms x%d', countr));
end

% Zisti si symbolicke premenne, ktore vystupuju vo vyrazoch %
premF = strrep(strrep(findsym(sym(F)),', ',''),',',' ');
premG = strrep(strrep(findsym(sym(G)),', ',''),',',' ');
premH = strrep(strrep(findsym(sym(H)),', ',''),',',' ');

% Premenne x1, x2, ..., xN su korektne, preskoc ich %
for countr = 1 : n
   premF = strrep(premF, sprintf('x%d',countr), '');
   premG = strrep(premG, sprintf('x%d',countr), '');
   premH = strrep(premH, sprintf('x%d',countr), '');
end

% Ak niektory retazec nezostal prazdny, vyhlas chybu %
if ~isempty(premF)
   error('Unknown symbol in f(x) expression - cannot continue!');
end
if ~isempty(premG)
   error('Unknown symbol in g(x) expression - cannot continue!');
end
if ~isempty(premH)
   error('Unknown symbol in h(x) expression - cannot continue!');
end

% Pretypovanie retazcov na symbolicke objekty %
F = eval(F); G = eval(G); H = eval(H);

% Otestovanie spravnosti rozmerov matic F,G,H (podla "n") %
if ~all(size(F) == [n,1])
   error('Invalid dimensions of f(x) matrix - cannot continue!');
end
if ~all(size(G) == [n,1])
   error('Invalid dimensions of g(x) matrix - cannot continue!');
end
if ~all(size(H) == [1,1])
   error('Invalid dimensions of h(x) matrix - cannot continue!');
end

% Definicia symbolov pre stavove premenne %
for countr = 1 : n
   eval(sprintf('syms x%d', countr));
   x(countr,:) = eval(sprintf('x%d', countr));
end

% Definicia symbolu "u" pre vstup sustavy a "w" pre ziadanu hodnotu URO %
syms u w;

% Prepocet f(x) a g(x) na tvar 1 t.j. na f(x,u) %
F = F + G*u;

% Korene ziadaneho polynomu URO %
kor = get(findobj(gcf,'Tag','EditPoly'),'String');

if isempty(kor) | (length(eval(kor)) ~= n)
   error('Wrong number of desired poles - cannot continue!');
else
   kor = eval(kor);
end

% Typ programovania - vstupne, vystupne, zmiesane %
met_prog = get(findobj(gcf,'Tag','PopupTypprog'),'Value');

switch (met_prog)
case 1
   prog_param = get(findobj(gcf,'Tag','EditPracBod'),'String');
   if isempty(prog_param)
     error('Fixed operating point not specified - cannot continue!');
   end
case 2
   prog_param = char(w);
case 3
   prog_param = char(H);
case 4
   m = eval(get(findobj(gcf,'Tag','EditPracBod'),'String'));
   if (m < 0) | (m > 1)
      error('Scheduling ratio "m" must be from within <0,1> interval - cannot continue!');
   end
   
   prog_param = char(m*w+(1-m)*H);
end

% Osetrenie vystupu h(x) - musi to byt jedna zo stav. velicin %
if (length(char(H)) ~= 2) | ~strncmp(char(H),'x',1)
   error('Invalid output function of the system! System output must be equal to one of the system state variables!');
end

A = jacobian(F,x);
B = jacobian(F,u);
C = jacobian(H,x);
D = jacobian(H,u);

% Vytvorenie rovnic pre ustaleny stav systemu z matic f(x,u), h(x,u) %
unknowns = 'x1';
equations = char(F(1));

for k = 2 : n
   unknowns = sprintf('%s,x%d',unknowns,k);
   equations = sprintf('%s,%s',equations,char(F(k)));
end

% Rovnice sa budu riesit vzhladom k neznamym u,x1,...xI-1,xI+1,...,xN kde y = xI %
unknowns = strrep(unknowns,char(H),'u');

% Riesenie rovnic pre rovnovazny stav - vyjadrenie rovn. stavu 1 parametrom %
alfa = solve(equations,unknowns);

% Osetrenie pripadu ked "alfa" nie je typu struct -> preved na struct %
if ~isstruct(alfa)
   pom_alfa = alfa;
   clear alfa;
   alfa.u = pom_alfa;
   clear pom_alfa;
end

% Osetrenie pripadu viacerych rieseni rovnice pre "alfa" %
polozky_alfa = fieldnames(alfa);
if prod(size(eval(sprintf('alfa.%s','u')))) > 1
   
   for l = 1 : max(size(eval(sprintf('alfa.%s','u'))))
      rovnovs = '';
      for k = 1 : length(polozky_alfa)
         rovnovs = sprintf('%s %s = %s',rovnovs,char(polozky_alfa(k)),char(getfield(alfa,char(polozky_alfa(k)),{l})));
         if (k < length(polozky_alfa))
            rovnovs = sprintf('%s,',rovnovs);
         end
      end
      if (l < max(size(eval(sprintf('alfa.%s','u')))))
         rovnovs = sprintf('%s| ',rovnovs);
      end
   end
   
else
   
   rovnovs = '';
   for k = 1 : length(polozky_alfa)
      rovnovs = sprintf('%s %s = %s',rovnovs,char(polozky_alfa(k)),char(getfield(alfa,char(polozky_alfa(k)))));
      if (k < length(polozky_alfa))
         rovnovs = sprintf('%s,',rovnovs);
      end
   end
   
end

% Vypis rovnovaznych stavov do Listboxu %
set(findobj(gcf,'Tag','ListboxRovnovs'),'String',rovnovs,'Enable','on');

knowns = sprintf('alfa.x1(%d)',vybr_ries);
for k = 2 : n
   knowns = sprintf('%s,alfa.x%d(%d)',knowns,k,vybr_ries);
end
knowns = strrep(knowns,char(H),'u');

% Vyjadrenie prvkov matic linearizovaneho systemu pomocou parametra alfa %
A = simple(sym(subs(A,eval(sprintf('{%s}',unknowns)),eval(sprintf('{%s}',knowns)))));
B = simple(sym(subs(B,eval(sprintf('{%s}',unknowns)),eval(sprintf('{%s}',knowns)))));
C = simple(sym(subs(C,eval(sprintf('{%s}',unknowns)),eval(sprintf('{%s}',knowns)))));
D = simple(sym(subs(D,eval(sprintf('{%s}',unknowns)),eval(sprintf('{%s}',knowns)))));

% Vektor stavovej spatnej vazby %
K = sym(zeros(1,n));

for k = 1 : n
   eval(sprintf('syms k%d', k));
   K(k) = eval(sprintf('k%d', k));
end

% Charakteristicky polynom uzavreteho regulacneho obvodu %
ch_pol = char(collect(poly(A-B*K,'s_prem'),'s_prem'));

% Ziadany charakteristicky polynom URO %
w_ch_pol = fliplr(poly(kor));

% Porovnanie koeficientov polynomov pri zodpovedajucich mocninach %
unknowns = 'k1';
indx = findstr('s_prem',ch_pol);
rovnica = ch_pol(indx(end)+6:end);
ch_pol = ch_pol(1:indx(end)-2);
equations = sprintf('%s=%d',rovnica,w_ch_pol(1));

for k = 2 : n-1
   unknowns = sprintf('%s,k%d',unknowns,k);
   indx = findstr(sprintf('s_prem^%d',k),ch_pol);
   rovnica = ch_pol(indx+7+length(num2str(k)):end);
   ch_pol = ch_pol(1:indx-2);
   equations = sprintf('%s,%s=%d',equations,rovnica,w_ch_pol(k));
end

if (n > 1)
   unknowns = sprintf('%s,k%d',unknowns,n);
   rovnica = ch_pol(8+length(num2str(n)):end);
   equations = sprintf('%s,%s=%d',equations,rovnica,w_ch_pol(n));
end

% Vektor stavovej spatnej vazby - priradenie konkretnych hodnot %
vektorK = solve(equations,unknowns);

if isstruct(vektorK)
   for k = 1 : n
      K(k) = eval(sprintf('vektorK.k%d',k));
   end
else
   K = vektorK;
end

% Vypocet konstantnej zlozky akcneho zasahu (zodpoveda rovnovaznemu stavu) %
u0 = eval(sprintf('alfa.u(%d)',vybr_ries));

% Parametrizacia hodnot stavovych velicin zodpovedajucich rovnovaznemu stavu %
x0 = sym(zeros(n,1));
for k = 1 : n
   if eval(sprintf('isfield(alfa,''x%d'')',k))
      x0(k) = eval(sprintf('alfa.x%d(%d)',k,vybr_ries));
   else
      x0(k) = eval(sprintf('x%d',k));
   end
end

% Vypocet konstanty predfiltra z podmienok ekvivalencie %
% f0 = simple(diff(u0,char(H)) + K*diff(x0,char(H)));
f0 = simple(1/(C*inv(-(A-B*K))*B));

% Nahradenie vystupnej premennej programovacou premennou podla typu programovania %
u0 = subs(u0, char(H), prog_param);
x0 = subs(x0, char(H), prog_param);
w0 = prog_param;

f0 = subs(f0, char(H), prog_param);
K = subs(K, char(H), prog_param);

% Vytvorenie vyrazu pre riadiaci zasah %
u = simple(u0 + f0*(w-w0) - K*(x-x0));

% Vypis riadiaceho zasahu %
set(findobj(gcf,'Tag','EditAkcZasah'),'String',char(u));

% Spristupnenie tlacidla "pretty" pre vypis do Command Window %
set(findobj(gcf,'Tag','BtnVystup'),'Enable','on');

% Spristupnenie tlacidla "Simulacia" pre otvorenie simulacnej schemy %
set(findobj(gcf,'Tag','BtnSimulacia'),'Enable','on');

% Znovunacitanie matic F,G,H kvoli simulacnej scheme %
F = get(findobj(gcf,'Tag','EditF'),'String');
G = get(findobj(gcf,'Tag','EditG'),'String');
H = get(findobj(gcf,'Tag','EditH'),'String');

F = eval(F); G = eval(G); H = eval(H);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品电影一区二区| 欧美日韩1区2区| 丁香另类激情小说| bt7086福利一区国产| 欧美亚洲动漫精品| 精品sm在线观看| 亚洲天堂成人网| 亚洲一区在线视频| 国产一区二区三区综合| 91视视频在线观看入口直接观看www | 不卡在线视频中文字幕| 欧美午夜不卡视频| 久久精品在线观看| 日日夜夜精品视频天天综合网| 国产一区欧美一区| 欧美人与性动xxxx| 亚洲天堂中文字幕| 国产成人8x视频一区二区| 7777精品伊人久久久大香线蕉的 | 亚洲国产综合视频在线观看| 国产一区二区美女| 在线不卡一区二区| 亚洲综合视频网| 91在线免费看| 亚洲美女少妇撒尿| 成人av免费网站| 国产精品美女久久久久高潮| 国产成人免费9x9x人网站视频| 337p亚洲精品色噜噜噜| 一区二区在线观看免费| 91色乱码一区二区三区| 欧美激情资源网| 麻豆极品一区二区三区| 色综合天天综合网国产成人综合天 | 成人ar影院免费观看视频| 欧美日韩国产免费| 中文字幕欧美日本乱码一线二线| 日韩国产精品大片| 宅男噜噜噜66一区二区66| 亚洲伊人伊色伊影伊综合网| 成年人网站91| 亚洲欧美日韩久久| 欧美视频一区二区三区四区| 国产欧美一区二区精品仙草咪| 玖玖九九国产精品| 日韩欧美国产wwwww| 麻豆精品视频在线观看| 欧美精品一区二区三区久久久| 久久国产福利国产秒拍| 日韩久久精品一区| 另类小说色综合网站| 91精品视频网| 国产最新精品免费| 国产精品狼人久久影院观看方式| www.日韩在线| 性做久久久久久久免费看| 欧美一卡在线观看| 99久久99久久久精品齐齐| 亚洲免费观看高清完整版在线观看 | 久久久99久久| 欧美中文字幕亚洲一区二区va在线| 中文字幕制服丝袜一区二区三区| 色婷婷一区二区三区四区| 美洲天堂一区二卡三卡四卡视频| 欧美xxx久久| 91同城在线观看| 久久精品72免费观看| 中文字幕日韩精品一区| 欧美一区二区女人| 91丨porny丨中文| 精品午夜久久福利影院| 有码一区二区三区| 欧美激情一区二区三区全黄| 欧美一级高清片在线观看| 国精产品一区一区三区mba视频| 亚洲欧美激情视频在线观看一区二区三区 | 日韩高清在线一区| 中文字幕在线观看不卡| 精品国产乱子伦一区| 欧美日韩你懂得| 欧美亚洲国产一卡| 色琪琪一区二区三区亚洲区| 国产成人精品一区二| 天天综合天天做天天综合| 一区二区在线看| 亚洲三级在线观看| 夜夜亚洲天天久久| 亚洲婷婷国产精品电影人久久| 国产精品久久久久婷婷二区次| 欧美极品少妇xxxxⅹ高跟鞋| 7777精品伊人久久久大香线蕉完整版 | 日本二三区不卡| 91啪九色porn原创视频在线观看| 91在线精品一区二区| 不卡一区二区中文字幕| 99精品国产91久久久久久| 色老头久久综合| 日韩视频一区在线观看| 日韩欧美三级在线| 久久精品欧美一区二区三区不卡 | 99久久精品情趣| 欧美日韩一本到| 日韩欧美一区电影| 亚洲国产经典视频| 五月综合激情网| 国产乱妇无码大片在线观看| 国产精品一色哟哟哟| 粉嫩av亚洲一区二区图片| 一本久久a久久免费精品不卡| 欧美日韩在线播放三区四区| 欧美电视剧在线观看完整版| 国产精品国产自产拍高清av王其| 亚洲午夜在线电影| 国产成人精品一区二区三区四区 | 国产色产综合产在线视频| 国产亚洲婷婷免费| 日韩1区2区3区| 欧美少妇xxx| 欧美激情综合在线| 蜜臀va亚洲va欧美va天堂| 在线亚洲免费视频| xfplay精品久久| 亚洲乱码精品一二三四区日韩在线| 午夜一区二区三区在线观看| 成人短视频下载| 国产日韩欧美亚洲| 久久超碰97中文字幕| 欧美日韩专区在线| 伊人夜夜躁av伊人久久| 精品无人码麻豆乱码1区2区| 欧美日韩在线三级| 亚洲国产另类精品专区| 在线精品视频免费播放| 亚洲一区成人在线| 色美美综合视频| 美女脱光内衣内裤视频久久网站 | 亚洲自拍另类综合| 精品欧美乱码久久久久久 | 久久99精品国产.久久久久| 国产精品日日摸夜夜摸av| 91丨九色porny丨蝌蚪| 丝袜亚洲另类欧美| 国产精品毛片久久久久久| 欧美午夜精品久久久久久超碰 | 国产精品日韩精品欧美在线| 欧美性视频一区二区三区| 国产在线精品国自产拍免费| 一区二区三区资源| 久久精品夜色噜噜亚洲aⅴ| 9191久久久久久久久久久| 国产盗摄女厕一区二区三区 | 欧美日韩国产首页在线观看| 福利电影一区二区| 午夜在线电影亚洲一区| 尤物视频一区二区| 中文字幕日本不卡| 久久久亚洲精品石原莉奈| 欧美精品在线一区二区三区| 丰满放荡岳乱妇91ww| 国产乱妇无码大片在线观看| 婷婷久久综合九色综合绿巨人| 亚洲欧美aⅴ...| 国产农村妇女精品| 欧美精彩视频一区二区三区| 日韩精品一区二区在线观看| 欧美伊人久久大香线蕉综合69| 不卡的看片网站| 91在线播放网址| 91麻豆免费看片| 欧美亚洲一区二区在线观看| 94色蜜桃网一区二区三区| 成人免费高清视频| 一本色道久久加勒比精品| 色偷偷一区二区三区| 91亚洲午夜精品久久久久久| 91香蕉国产在线观看软件| 欧美日韩免费电影| 日韩欧美国产麻豆| 国产婷婷色一区二区三区四区| 国产欧美日韩精品在线| 亚洲免费在线视频| 日韩不卡一区二区三区| 国产一区激情在线| 在线观看视频一区二区欧美日韩| 欧美高清你懂得| 久久精品视频一区二区| 一区二区三区四区激情| 免费成人性网站| 粉嫩一区二区三区性色av| 欧美优质美女网站| 久久精品视频在线免费观看| 亚洲欧美激情在线| 狠狠色丁香婷婷综合久久片| 99精品黄色片免费大全| 日韩欧美黄色影院| 亚洲乱码日产精品bd| 国产伦理精品不卡| 欧美日韩三级视频| 依依成人综合视频| 成人动漫在线一区|