1. Úvod
Programový systém PC-MATLAB (produkt firmy MathWorks) je velmi efektivním nástrojem pro vědecké a inženýrské výpočty v oblastech, kde se uplatňuje maticový počet. K jeho základním přednostem patří jeho otevřenost, t.j. možnost rozšiřování o vlastní funkce, značný počet dostupných, problémově orientovaných balíků hotových funkcí (tzv. toolboxů), jednoduchá syntaxe a kvalitní implementovan
é algoritmy. Protože lineární teorie automatického řízení využívá v široké míře práce s maticemi, je PC-MATLAB pro použití v této oblasti velice vhodný a stal se zde světovým standardem. Svědčí o tom velké množství dostupných toolboxů - Control System Toolbox pro klasickou teorii řízení, Signal Processing Toolbox pro syntézu filtrů, Identification Toolbox pro identifikaci dynamických systémů, Optimization Toolbox pro řešení různých úloh statické optimalizace ap.Program PC-MATLAB vyžaduje použití numerického koprocesoru (80.87). Případné použití emulátorů je na úkor rychlosti výpočtu - zpomalení je prakticky o řád. Aritmetické operace jsou implementovány v dvojté přesnosti (8 byte na reálný skalár), což spolu s kvalitními vestavěnými algoritmy dává předpoklad dobré přesnosti výpočtu. Je však třeba mít na zřeteli, že špatně podmíněný problém nelze přesně řešit žádným algoritmem.
Název programu PC-MATLAB napovídá, že jde o "maticovou laboratoř". Je to interaktivní, "command driven" program pro odborníky v různých oblastech. Na rozdíl od některých "menu driven" programů pro širokou veřejnost efektivní používání PC-MATLABU vyžaduje určitý stupeň znalostí jeho syntaxe a základního okruhu funkcí. Proto lze vřele doporučit pečlivé seznámení s tímto programem.
Program PC-MATLAB bude používán na katedře řídicí techniky ČVUT FEL prakticky ve všech cvičeních teorie dynamických systémů i teorie automatického řízení a pravděpodobně ještě v dalších předmětech. Protože si vyučující jsou vědomi nedostatku literatury o PC-MATLABu, byla napsána tato příručka. Jejím účelem je základní seznámení s PC-MATLABem a Control System Toolboxem pro uživatele, kteří s tímto programem dosud nepracovali. Je vhodné si příkazy uvedené v příručce zkoušet hned na počítači. Pro detailnější seznámení je čtenář odkazován na on-line help a popř. na originální manuál, který je na katedře v jednom exempláři. Vzhledem k tomu, že se jedná o první verzi příručky, autor se omlouvá za případné chyby a bude vděčen za všechny připomínky a náměty na její zlepšení.
2. Jak začít
Zavolání programu PC-MATLAB je závislé na instalace resp. na pojmenování volací dávky. V laboratořích katedry řídící techniky je to příkazem
>MATLAB
Volat PC-MATLAB je vhodné z pracovního adresáře, ve kterém je možno ukládat soubory s průběžně uchovávanými daty a případně soubory obsahující vlastní funkce a makr
a PC-MATLABu (M soubory).Po zavolání PC-MATLABu se vypíše hlavička programu s číslem licence a vzkaz, že jsou k dispozici příkazy HELP a DEMO. S těmi je také nejlepší začít seznamování s PC-MATLABem.
PC-MATLAB očekává příkaz promptem
»
Nejlepší je začít příkazem
»demo
kde ve dvanácti ukázkách jsou ilustrovány možnosti programu PC-MATLAB.
PC-MATLAB obsahuje on-line help, který umožnuje získat informace o kterékoli funkci. Příkaz
»help
vypíše na obrazovku seznam používaných operátorů, klíčových slov a vestavěných funkcí. Po stisknutí klávesy vypíše seznam adresářů, ve kterých jsou soubory
*.M. Tyto soubory obsahují makra a funkce, které jsou psány v PC-MATLABu a z něj se volají jako jednoduché příkazy (ve kterých adresářích bude PC-MATLAB hledat soubory *.M se nastavuje při instalaci definováním MS-DOS parametru MATLABPATH). Po stisknutí klávesy se budou postupně vypisovat *.M soubory z uvedených adresářů. PC-MATLAB prohledává také pracovní adresář, i když jeho obsah nevypisuje příkazem help.Pokud chceme informace o specifické funkci, klíčovém slovu, operandu, spustíme příkaz
»help topic
např.
»help *, »help :, »help for, »help eig atd.Práce s PC-MATLABem se ukončí příkazem
»exit
3. Přiřazovací příkaz a maticové proměnné
PC-MATLAB nezná přísné deklarování typu proměnné tak jako např. Pascal. Proměnné se nedeklarují, ale definují až při prvním přiřazení hodnoty. Přiřazovací příkaz
má tvar» proměnná = výraz
Jméno proměnné začíná písmenem a skládá se z libovolného počtu písmen, číslic a podtržítek. Rozlišuje se prvních 19 znaků a rozlišují se velká a malá písmena.
Základním typem proměnných v PC-MATLABu je komplexní matice. Všechny další typy jsou pouze speciální případy - reálné matice, vektory, skaláry. Dimenze proměnné se dynamicky mění podle výsledku přiřazení na pravé straně.
Sestavení konstantní matice se provede následujím způsobem:
»A = [ 1 23 4
-5 6.7 8
9 10 0]
nebo
»A = [1,23,4;-5,6.7,8;9,10,0]
Prvky matice se uzavírají do hranatých závorek, prvky v řádcích se oddělují čárkou nebo mezerou, řádky se od sebe oddělují středníkem nebo znakem CR (konec řádku). Po odeslání kteréhokoli z těchto příkazů se na obr
azovce vypíšeA =
1.0000 23.0000 4.0000
-5.0000 6.7000 8.0000
9.0000 10.0000 0
Pokud chceme potlačit výpis výsledku přiřazení, ukončíme přiřazovací příkaz středníkem. Pokud je výraz příkaz příliš dlouhý, několika tečkami .. před znakem CR dáme PC-MATLABu vědět, že příkaz bude pokračovat na dalším řádku.
Specielním případem matice je prázdná matice označovaná [], např. »P = [];.
Prvky matice mohou být i aritmetické výrazy, např.
» c = [1+1 3 sqrt(4)];
Pozor na používání mezer,
» d = [1 +1 3 sqrt(4)];
vygeneruje řádkový vektor
d =[1,1,3,2] zatímco c = [2,3,2]. Komplexní matice vytváříme analogickým způsobem pomocí imaginární jednotky i nebo j.Na prvky matice se odvoláváme takto: »A(1,2) = 8 . Pokud by index přesahoval dosavadní dimenzi matice A, tato by se dynamicky zvětšila a dosud nedefinované prvky by byly rovny nule. Ovšem pokud bychom odkazovali na na neexistující prvek matice na levé straně přiřazení, PC-MATLAB by reagoval chybovým hlášením, stejně jako v případě nekladného indexu.
Skládání velkých matic ze submatic je jednoduché - řídí se podobnými pravidly jako sestavení matic z prvků. Jediným omezením je rozměrová kompatibilita. Několik příkladů:
»B = [A,[1;2;3]]
přidá ke dříve definované matici sloupec,»C = [A;[1,2,3]]
přidá ke dříve definované matici řádek,»D = [A,B]; E = [A;C]
; sestaví matice ze dvou submatic atd.
Extrakce submatice z velké matice se dělá následujícím způsobem:
»A12 = D(1:2,4:6)
přiřadí matici A12 submatici matice D, která je dána prvky na řádcích 1 až 2 a sloupcích 4 až 6. Samotná dvojtečka znamená všechny řádky nebo sloupce:
»A1 = D(1:2,:)
přiřadí matici A1 první dva řádky matice D.Proměnné, které se v průběhu práce vytvářejí, jsou ukládány v
pracovním prostoru. Proměnné, které jsou právě v pracovním prostoru a velikost volné paměti lze vypsat příkazem»who
Podrobnější informaci o velikosti proměnných se dozvíme zadáním příkazu
»whos
V pracovním prostoru se nachází několik implicitně definovaných proměnných : eps - pro použití v různých testech jako tolerance (implicitně 2-52 10-16), pi - Ludolfovo číslo, inf - nekonečno (výsledek dělení 0), NaN - Not a Number (výsledek 0/0 ap.), ans - výsledek výrazu, který není přiřazen žádné proměnné, např. »1+1 ap.), i, j. - imag. jednotky.
K vyčištění pracovního prostoru slouží příkaz
»clear
Vymazání určité proměnné se provede příkazem
»clear X
4. Maticové operace a operace nad prvky matic
4.1 Maticové operace
Operátor transpozice je apostrof ', použití např.
»B = A'
Pro komplexní matice tento operátor vrací matici transponovanou a komplexně sdruženou.
Operace maticového maticového sčítání a odčítání se zapisují jednoduše
»C = A + B; »D = A - B;
Samozřejmě se předpokládá, že operandy mají stejmou dimenzi. Pouze je-li jeden z nich skalár, je tento přičten k resp. odečten od všech prvků matice.
Operace maticového násobení se značí *. , např.
» X = M * N
kde opět o operandech předpokládáme, že mají rozměry kompatibilní podle pravidel maticového násobení. Je-li 1 operand skalár, provede se skalární násobení, např.
»Y = 4*X;
Operace maticového dělení jsou dvě:
levé dělení
»X = A / B
je řešení maticové rovnice A*X = B,pravé dělení
»X= B \ A
je řešením maticové rovnice X*A = B.
Opět jsou předpokládány odpovídající dimenze operandů. Pokud matice A je čtvercová, je řešení ekvivalentní násobení inverzní maticí. V případě A nečtvercové jde o řešení přeurčené resp. nedourčené rovnice ve smyslu nejmenších čtverců.
Operace maticového umocňování je definována, je-li základem čtvercová matice a exponentem skalár, značí se
»S = A ^ p
Transcendentní maticové funkce (rozuměj funkce matic, ne funkce nad prvky matic) jsou definovány pouze 3 pro čtvercové matice: Příkladem je maticová exponenciála, která se používá pro převod spojitého systému na diskrétní.
»C = expm(A);
Maticové funkce
expm maticová exponenciála
logm maticový logaritmus
sqrtm maticová 2. odmocnina
4.2 Operace nad prvky matic
Zde se budeme zabývat operacemi prvek po prvku mezi maticemi. Obvyklé maticové sčítání a odčítání jsou operace prvek po prvku a nemají zvláštní značení.
Násobení matic prvek po prvku se značí .* , např.
» x = [1 2 3]; y = [4 5 6]; z = x .* y
dá
z =
4 10 18
Podobně operace
./ a .\ dává podíly jednotlivých prvků.V předchozích případech jsme automaticky předpokládali stejnou dimenzi operandů. Mocnina "prvek po prvku" dává několik možn
ostí :»z = x .^y; zz = 2 .^ x; zzz = x .^2;
Operandy mohou být matice stejných rozměrů (pak se mocnění provede nad korespondujícími prvky základu a exponentu) základ skalár a exponent vektor a naopak; všimněte si u výrazu pro
zz mezery mezi 2 a . - ta je z hlediska syntaxe důležitá, jinak by . byla interpretována jako desetinná tečka.Do kategorie operaci prvek po prvku patří také
relace a logické operace. Relace slouží k porovnávání prvků matic stejné dimenze. Výsledkem relační operace je matice nul a jedniček, kde 1 reprezentuje pravdu a 0 nepravdu. Používají se následující relační operátoryRelační operátory
< menší než
<= menší nebo roven
> větší než
>= větší nebo roven
== rovná se
~= nerovná se
Logické operace se provádějí taktéž nad prvky matic. Logickou hodnotu FALSE představuje hodnota prvku 0, hodnotu TRUE jiná hodnota než 0. V PC-MATLABu jsou implementovány tři logické operátory:
Logické operátory
& AND
| OR
~ NOT
Logické operace opět vracejí matice nul a jedniček.
Ve spojení s relačními a logickými operátory jsou užitečné funkce
all a any. Pro vektor x obsahující funkce all(x) vrátí hodnotu 1, jestliže všechny prvky x jsou nenulové a jinak 0. Funkce any vrátí 1, jestliže vektor x obsahuje alespoň 1 nenulový element, jinak 0. Pokud je argumentem těchto funkcí matice, potom vracejí vektor nul a jedniček, který provedl dříve popsanou funkci all nebo any nad sloupci dané matice. Pokud tedy chceme vědět, jsou-li všechny prvky matice A nenulové, voláme any(any(A)).Elementární matematické funkce
abs absolutní hodnota
angle fázový úhel
sqrt 2. odmocnina
real reálná část
imag imaginární část
conj komplexně sdružená matice
round zaokrouhl. k nejbl. celému číslu
fix zaokrouhl. směrem k 0
floor zaokrouhl. směrem k -
ceil zaokrouhl. směrem k
sign funkce signum
rem zbytek
sin sinus
cos cosinus
tan tangens
asin arcus sinus
acos arcus cosinus
atan arcus tangens
atan2 4 kvadrantový arcus tan.
sinh hyperbolický sinus
cosh hyperbolický cosinus
tanh hyperbolický tangens
exp exponenciála základu e
log přirozený logaritmus
log10 logaritmus základu 10
bessel Besselova funkce
gamma gamma funkce
rat racionální aproximace
Všechny základní matematické operace lze uplatnit nad maticemi a vektory prvek po prvku. Příkladem může být výpočet funkční hodnoty pro množinu nezávisle proměnných:
»t = [0,1,2,3,4,5,6,7,8,9];
»omeg = 4; tl = 0.5; fi = pi/4;
»odez = exp(-tl*t) .* sin(omeg*t + fi);
»plot(t,odez,'*g')
(funkce plot viz kap.7 ). Přehled elementárních matematických funkcí je v tabulce
. Bližší podrobnosti viz HELP.5. Maticové funkce
5.1 Funkce na sestavení specielních matic a vektorů
Nulová matice rozměru m,n : »A = zeros(m,n);
Jedničková matice
rozměru m,n: »A = ones(m,n);Jednotková matice rozměru n,n: »A = eye(n);
Matice náhodných čísel
roz.m,n: »A = rand(m,n)Náhodná čísla jsou generována s rovnoměrným rozdělením v intervalu (0,1). Přepnout na normální rozdělení se střední hodnotou 0 a rozptylem 1 lze příkazem
rand('normal') a zpět na rovnoměrné rozdělení příkazem rand('uniform').Diagonálu čtvercové matice získáme použitím funkce
»d = diag(A);
kde výsledek je řádkový vektor. Sestavení diagonální matice s daným vektorem na diagonále provedeme
» D = diag(d);
příkazem
»D = diag(diag(A));
dostaneme diagonální matici D, která má s maticí A společnou diagonálu.
Horní nebo dolní trojúhelníkovou část matice dostaneme pomocí příkazů
»U = triu(A); »L = tril(A)
Funkce diag, triu, tril lze aplikovat nejen vzhledem k hlavní diagonále, ale i ke kterékoli vedlejší - viz HELP.
Sestavení vektoru s lineárně rostoucími prvky se provede pomocí operátoru dvojtečka:
»x = lower_b:step:upper_b
vytvoří vektor, jehož složky jsou rovnoměrně rozděleny mezi hodnoty lower_b a upper_b a vzrůstají s krokem step. Pokud step = 1, lze ho vynechat a příkaz psát ve tvaru
»x = lower_b:upper_b
V příkladu v předchozí kapitole lze místo
»t = [0,1,2,3,4,5,6,7,8,9]; psát »t = 0 : 9; Přírůstek nemusí být celý a může být i záporný, např. »alfa = pi : -pi/6 : -pi; . Takové vektory se využívají velmi často pro generování tabulek a grafů.Často je potřeba mít vektor s logaritmicky rozdělenými složkami. Ten se vytvoří příkazem
»x = logspace(d1,d2,N) . Vektor x pak obsahuje N složek rozdělěných logaritmicky mezi hodnoty 10^d1 a 10^d2.Pro zjištění rozměrů matice používáme funkci
size. Tato funkce vrací dva výstupní argumenty, počet řádků a počet sloupců. Syntaxe volání této funkce je následující: »[nr,nc] = size(A);. Délku vektoru v získáme použitím funkce length(v) .
5.2 Dekompozice a faktorizace
Trojúhelníkový rozklad, LU rozklad, funkce lu se dvěma výstupními argumenty: »[L,U] = lu(A);
A je čtvercová. Platí A = L*U a U je horní trojúhelníková matice a L dolní trojúhelníková matice (event. s přeházenými řádky).
Inverze matice (počítaná pomocí LU)
»X = inv(A);
Determinant matice »d = det(A)
Vlastní čísla čtvercové matice
»d = eig(A);
vrací vlastní čísla matice ve sloupcové
m vektoru. Vlastní čísla a vlastní vektory obdžíme příkazem»[X,D] = eig(A)
který produkuje matici X, jejíž sloupce jsou vlastní vektory A a čtvercovou diagonální matici D, která má na diagonále vlastní čísla.
Singulární rozklad matice (singular value decomposition) se provede příkazem »[U,S,V] = svd(A)
kde U a V jsou unitární matice, t.j. platí U*U' = I a V*V' = I, kde I je jednotková matice odpovídajících rozměrů, S je diagonální matice s reálnými nezápornými čísly na diagonále, sestupně uspořádanými a platí A = U*S*V'.
Choleskyho rozklad symetrické, pozitivně definitní matice
»R = chol(X)
kde platí R'*R = X.
V PC-MATLABu jsou implementovány další důležité funkce, jako např. ortogonální rozklady QR, Schurův, Hessenbergův atd., viz HELP.
5.3 Další užitečné funkce
Hodnost matice počítaná ze singulárního rozkladu
»r = rank(A)
Norma matice
»p = norm(A)
produkuje tzv. spektrální normu, největší singul. hodnotu,
norma vektoru »r=norm(v) produkuje Euklidovu normu. Dalším argumentem funkce norm lze změnit typ maticové či vektorové normy, viz HELP.Číslo podmíněnosti matice, počítané ze singulárního rozkladu
»c = cond(A)
Charakteristický polynom matice
»p = poly(A)
Polynomy se v PC-MATLABu implementují jako řádkové vektory s koeficienty uspořádané podle klesajících mocnin.
Kořeny polynomu
»x = roots(c)
x je sloupcový vektor, který obsahuje kořeny polynomu, jehož koeficienty jsou ve vektoru c. Příkazem
»p = poly(x), kde x je vektor, dostaneme vektor p, který obsahuje koeficienty polynomu, jehož kořeny jsou ve vektoru x. Roots a poly jsou inverzní funkce.
6. Řetězce, vstup a výstup dat, práce se soubory
6.1 Znakové řetězce
Znakové řetězce v PC-MATLABu jsou vym
ezeny apostrofy; »s = 'Hello'; Text je uložen ve vektoru, každý element obsahuje jeden znak. Znaky jsou uloženy jako ASCII hodnoty, funkci abs můžeme použít k vypsání jejich ASCII kódů »abs(s). Skládání řetětzců je tudíž ekvivalentní skládání vektorů - »s = [s 'World'] dá text 'Hello World'. K převodu čísel na znakovou reprezentaci jsou k dispozici funkce sprintf, num2str, int2str.K vytváření jednoduchých textových maker slouří funkce
eval. eval(t) , kde t je řetězec způsobí, že t se interpetuje jako příkaz nebo část výrazu. Příklad vhodného použití této funkce viz funkce funm ze standardní knihovny.
6.2 Vstup a výstup dat
Doposud jsme předávali data PC-MATLABu pomocí klávesnice vypsáním přiřazovacího příkazu. Později, až budeme psát vlastní příkazy a funkce, budeme potřebovat, aby komunikovaly s uživatelem prostřednictvím klávesnice. Budeme potřebovat cosi jako "READ funkci". V PC-MATLABu je definována funkce
input. Chceme-li přečíst z klávesnice číslo, napíšeme»x = input(t)
kde t je řetězec, který slouží jako prompt při čtení žádané hodnoty, př:
»Ti = input('integracni cas. konstanta: ');
Chceme-li přečíst řetězec, napíšeme
»s = input(t,'s');
např.
»fname = input('jmeno souboru: ','s');
Výstup dat va obrazovku lze udělat snadno tak, že vynecháme středník na konci výrazu. Potom nám PC-MATLAB vypíše jméno proměnné, znak = a hodnotu proměnné. Pokud chceme vynechat jméno a rovnítko, použijeme příkaz »disp(promenna).
Na tomto místě
je vhodné se zmínit o výstupním formátu dat.Pokud jsou všechny prvky matice celá čísla, matice se tiskne ve formátu bez desetinné tečky. Pokud alespoň jeden prvek matice není celé číslo, je možné použití různých výstupních formátů, které se nastavují příkazem
»format option. Option zde může představovat short, long, short e, long e, hex, +.Uveďme si příklad
»x = [4/3 1.2345e-6]
Formáty a odpovídající výstupy budou
format short (implicitní)
1.3333 0.0000
format short e
1.3333E+000 1.2345E-006
format long
1.333333333333338 0.000001234500000
format long e
1.333333333333338E+000 1.23450000000003E-006
format hex
3FF5555555555555 3EB4B6231ABFD271
format +
++
Pro dlouhé formáty se poslední číslice může zdát nesprávná, ale výstup je přesnná dekadická reprezentace binárního čísla uloženého v paměti.
U formátů short a long je v případě, kdy největší prvek matice je více než 1000 krát větší než nejmenší, matice je přeměřítkována společným faktorem (zkus
te vypsat matici 1E20*x).U formátu + se vypisuje znak + na místo kladných čísel, - místo záporných a mezera místo 0.
6.3 Práce se soubory
K uchování dat, které vznikly během výpočtu a nacházejí se v pracovním prostoru slouží příkazy
load a save»save
Nahraje celý pracovní prostor do souboru matlab.matve specielním formátu PC-MATLABu.
»load
Obnoví pracovní prostor ze souboru matlab.mat»save temp x1 x2
Uschová vyjmenované proměnné (x1,x2) do souborupojmenovaném temp.mat
»load temp
Nahraje data ze souboru temp.mat - může být iASCII soubor
Pro práci s diskovými soubory jsou v PC-MATLABu příkazy dir, type, delete, chdir, které jsou analogické stejnojmenným příkazům MS-DOSu. V příkazu type, pokud není uvedena přípona souboru, automaticky se předpokládá *.M.
K zaznamenání průběhu práce s PC-MATLABem je určen příkaz diary. Po spuštění příkazu
»diary file_name
se do textového souboru nahraje záznam spouštěných příkazů a všechno, co PC-MATLAB vypisuje na obrazovku. Tento soubor se uzavře příkazem
»diary off
, opět se otevře »diary on.Spouštění externích programů se děje pomocí znaku ! - např
»!copy xxx.m b:, »!xtp
atd.
7. Grafika
V PC-MATLABu jsou implementovány následující příkazy pro kreslení různých typů grafů
Typy grafů
plot lineární X-Y graf
loglog logaritmicý X-Y graf
semilogx stupnice X -log, Y - lin.
semilogy stupnice Y -log, X - lin.
polar polární graf
mesh 3 - rozměrná plocha
bar sloupcový graf
polarbar polární sloupcový graf
stairs schodová funkce
Když je graf nakreslen, může být opatřen nadpisem, popisem os, rastrem atd:
title nadpis
xlabel popis osy x
ylabel popis osy y
text popis grafu
gtext popis grafu s myší
grid rastr
Příkazy pro řízení obrazovky:
shg ukaž grafickou obrazovku
clc smaž příkazovou obrazovku
clg smaž grafickou obrazovku
home kurzor vlevo nahoru
axis manuální nastavení měřítek
hold zachování grafu na obraz.
subplot rozdělení graf. obrazovky
prtsc hardcopy příkaz. obrazovky
print pošli graf na tiskárnu
meta grafický metasoubor
Nyní bude popsán základní grafický příkaz plot. Ostatní se používají analogicky a liší se prakticky jen měřítkem os nebo typem grafu. Základní forma je
»plot(y)
, kde y je vektor. Pak bude vykreslen graf prvky versus jejich indexy - např»plot(rand(1,20))
Měřítka grafu
jsou nastavena automaticky. Grafy se kreslí na zvláštní grafickou obrazovku; obsah grafické obrazovky se přemaže novým grafem. Příkazová obrazovka se obnoví stisknutím kterékoli klávesy. Dalšími příkazy můžeme graf nadepsat, popsat osy , udělat rastr, vepsat text:»title('nahodny signal')
»xlabel('k - index'), ylabel('amplituda')
»grid, gtext('Ahoj')
Obecnější případ je
»plot(x,y) kde x a y jsou vektory stejné dimenze. Pak bude vykreslen graf x versus y. Příklad viz. kap.4.2.Vícenásobné grafy můžeme tvořit dvěma způsoby.
První je použitím příkazu
»plot(X,Y)
;X může být vektor a Y matice s takovým počtem sloupců (řádků) jako je prvků X. Potom se vykreslí grafy X versus sloupce (řádky) Y, každý jinou barvou. Podobně je tomu v případě, kdy je X matice a Y vektor. Jsou-li X a Y matice stejné dimenze, pak se vykreslují grafy sloupce X versus sloupce Y.
Druhý způsob je jednodušší:
»plot(x1,y1,x2,y2,...,xn,yn)
kde xi, yi jsou dvojice vektorů stejné dimenze.
Pokud zadáme
»plot(Z)
k
de Z je komplexní matice, je to ekvivalentní příkazu »plot(real(Z),imag(Y)).Úplný tvar příkazu plot je
»plot(X,Y,'s') nebo »plot(x1,y1,'s1',x2,y2,'s2',..), kde řetězce s, s1, s2 slouží k definování typu a barvy čar resp. značek - seznam všech symbolů viz HELP.Příkaz
mesh se používá pro třírozměrné grafy. Jeho použití je ukázáno v DEMO programu.Příkaz
subplot(mnp) slouří k rozdělení gragické obrazovky na několik oken. Symbol m znamená počet oken nad sebou (1 až 2), n vedle sebe (1 až 2), p pořadí okna, do kterého se bude kreslit (1 až m*n). Jako příklad si uveďme posloupnost příkazů pro kreslení amplitudové a fázové charakteristiky.»num = 10; den = [1, 11, 10];
(koeficienty čitatele a jmenovatele nějakého přenosu).
»omeg = logspace(-1,2,30);
(vektor frekvencí, rozdělených logaritmicky od 10
-1 do 102)»[mag,phas] = bode(num,den,omeg);
(Výpočet frekvenčních charakteristik pomocí funkce bode z Control Toolboxu. Nová verze této funkce kreslení grafu již obsahuje)
»subplot(211), semilogx(omeg, 20*log10(mag)),..
title('Amplitude'),
xlabel('angle frequency rad/s'),..
ylabel('dB')
»subplot(212),semilogx(omeg,phas),
title('Phase'),..
xlabel('angle frequency'), ylabel('deg')
Pokud bychom potřebovali nastavit vlastní měřítka os, používáme funkci
axis. Příkaz »axis zmrazí stávající měřítka pro příští grafy, použití tohoto příkazu podruhé obnoví automatické měřítkování. »v = axis vrací vektor s aktuálně nastavenými měřítky [xmin, xmax, ymin, ymax]. Vlastní měřítka nastavíme příkazem »axis(v).Příkaz
»hold on zachová grafickou obrazovku i s nastavením měřítek, nové grafy jsou kresleny přes staré; »hold off tento příkaz zruší.Překopírování grafické obrazovky na tiskárnu lze udělat v případě, když je v paměti rezidentní program (např graphics, egaepson), který to umožňuje (stisknutím kláves Shift PrintScrn). Jiná možnost je vytvořit grafický metasoubor příkazem
»meta jmeno_s. Pak v MS-DOSu zavoláním příkazu GPP (nachází se v adresáři u PC-MATLABu) se jménem souboru a parametrem (typ výst. zař.) vytiskneme graf ve vysoké kvalitě. Seznam parametrů obdržíme zavoláním samotného GPP.
8. Řídící příkazy
PC-MATLAB dává možnost uživateli psát vlastní příkazy a funkce. Tím se stává něčím víc než jen maticovým kalkulátorem - vlastně problémově orientovaným programovacím jazykem. Syntaxe tohoto jazyka je velmi jednoduchá, podobá se BASICu. V této kapitole budou popsány řídící příkazy, v následující pak postup vytvoření M souborů, ve kterých jsou implementovány vlastní příkazy.
Smyčka for má syntaxi
for řídící_proměnná = vektor příkazyend
Smyčka se projde tolikrát, kolik má vektor v příkazu for prvků a při každém průchodu se přiřadí řídící proměnné hodnota příslušného prvku. Parametr cyklu nemusí být celé číslo a vektor nemusí být ani uspořádaný (a dokonce může být definován jako výraz). Nejčastěji je však vektor ve for definován jako min : krok : max. Smyčky for mohou být do sebe vnořeny, ale vždy ke každému for musí odpovídat nějaký end.
Důležitá poznámka - používání smyček for se vyhněte kdykoli je možno provést operaci nad celou maticí najednou. Interpret PC-MATLABu je relativně pomalý.
Smyčka while:
while výraz
příkazy
end
Příkazy uvnitř smyčky while se vykonávají, pokud hodnota výrazu je matice s nenulovými prvky. Obvykle se však používá skalár. Pro určení nenulovosti celé matice či existenci nenulových prvků v matici se používá all(all(.)) a any(any(.)).
Příkaz větvení if:
if výraz1
příkazy
elseif výraz2
příkazy
else
příkazyend
Příkaz if obsahuje 2 větvení, které probíhají obvyklým způsobem. Druhé větvení elseif je možno vypustit.
9. M - soubory
9.1 Script soubory
Script soubory jsou textové soubory s příponou *.M, které umožní provést sekvenci příkazů najednou, aniž by je bylo nutno zadávat z klávesnice. Protože PC-MATLAB nemá integrovaný editor, je třeba tento soubor vytvořit mimo PC-MATLAB, což je při ladění poněkud těžkopádné (dobrá cesta je volat editor přímo z PC-MATLABu, pokud zbývá dost volné paměti, např »!ne file_name.m). Ukažme si příklad takového souboru. Nejprve ve svém oblíbeném editoru vytvoříme soubor example1.m, který obsahuje posloupnost příkazů pro vykreslení průběhu odezvy systému hmotnost-pružina-tlumič ve fázové rovině. Ve svém oblíbeném editoru vytvoříme soubor exam1.m, který obsahuje následující text (dobrá cesta je volat editor přímo z PC-MATLABu, pokud není plná paměť, např »!ne exam1.m):
% system hmotnost-pruzina-tlumic
m = input('hmotnost: ');
B = input('tlumeni : ');
K = input('tuhost : ');
x10= input('pocatecni vychylka: ');
x0 = [x10;0]; % pocatecni stav
% stavove rovnice
A = [0,1;-K/m,-B/m]; B = [0;1]; C = [1,0]; D=0;
% volani simulacni procedury z Control Toolboxu
[y,X,tt]=initial(A,B,C,D,x0);
plot(X(:,1),X(:,2)),title('fazova rovina'),grid
V PC-MATLABu pak jen spustíme příkaz
»example1 . Symbol % znamená, že zbytek řádku je komentář. Prvních několik řádků v M-souboru se berou jako HELP - zkuste »help exam1. Jiným příkladem je kterékoli demo v PC-MATLABu, např odedemo.m
9.2 Funkce
Funkce se liší od skript souboru tím, že má vstupní argumenty a výstupní argumenty a proměnné vytvořené uvnitř funkce jsou lokální. M-soubor, který implementuje funkci, musí mít záhlaví ve tvaru
function out_arg = jmeno_fce(in1,in2,...)
nebo
function [out1, out2,..] = jmeno_fce(in1, in2, ..)
Předchozí příklad můžeme upravit do tvaru funkce; napíšeme soubor
exam2.m, který obsahuje následující textfunction [X,tt] = exam2(m,K,B)
% odezva systemu hmotnost-pruzina-tlumic
% vstupy : m-hmotnost, K-tuhost, B-cinitel tlumeni
% vystupy: X-stavová trajektorie, tt-vektor casu
x10= input('pocatecni vychylka: ');
x0 = [x10;0]; % pocatecni stav
% stavove rovnice
A = [0,1;-K/m,-B/m]; B = [0;1]; C = [1,0]; D=0;
% volani simulacni procedury z Control Toolboxu
[y,X]=initial(A,B,C,D,x0);
plot(X(:,1),X(:,2)),title('fazova rovina'),grid
Volání této funkce může mít podobu
»[xtraj,tim] = exam2(1,1,1);
Funkci můžeme volat i s menším počtem vstupních a výstupních parametrů, než je definováno v jejím záhlaví. Aby se daly ošetřit tyto případy, existuje funkce
nargin, která vrací počet vstupních argumentů. Vhodným příkladem je řada funkcí v Control System Toolboxu, které mohou být volány buďto se vstupními argumenty čtveřicí stavových matic A,B,C,D nebo dvojicí vektorů s koeficienty čitatele a jmenovatele přenosu (viz např. help lsim).Pokud chceme průběžně vypisovat příkazy, které se vykonávají v průběhu provádění M-souboru, napíšeme před spuštěním
»echo on, výpis se opět vypne příkazem »echo off. Zastavení vykonávání M-souboru do stisknutí klávesy umožní příkaz »pause. »pause(n) zastaví program na n sekund.Užitečným nástrojem pro ladění je příkaz
keyboard, který volá klávesnici jako M-soubor. To znamená, že se běh původního M-souboru přeruší a je možno zadávat příkazy z klávesnice (a např. vypisovat lokální proměnné funkcí). Řízení se vrátí zpět M-souboru příkazem return.10. Control System Toolbox
10.1 Modely systémů
Control System Toolbox je určen pro analýzu a syntézu lineárních, časově invariantních dynamických systémů diskrétních i spojitých. Možnosti použití naznačuje demo program ctrldemo. Systém může být reprezentován pomocí různých popisů, z nichž jsou zde podporovány následující:
Stavový popis spojitého systému má tvar
dx/dt = A x + B u
y = C x + D u
kde x je nx rozměrný vektor stavů, u je nu rozměrný vektor vstupů a z je ny rozměrný vektor výstupů. V Control Toolboxu může být lineární model spojitého systému reprezentován jednoduše čtveřicí matic A, B, C, D. Podobně diskrétní systémy popsané diferenčními stavovými rovnicemi
xk+1 = M xk + N uk
yk = C xk + D uk
budou reprezentovány čtveřicí matic
M, N, C, D. Protože PC-MATLAB je maticově orientovaný jazyk, použití tohoto popisu je nejpřirozenější a často též dává numericky spolehlivější výsledky.Přenosová funkce v Laplaceově transformaci je běžně používaným popisem lineárního spojitého systému, který dává vztah mezi Laplaceovým oprazem vstupu a výstupu při nulových počátečních podmínkách:
Y(s) = H(s) U(s), kde H(s) = C (sI - A)-1B + D.
Poz. V západní literatuře, tzn i v dokumentaci a HELPu PC-MATLABu se proměnná v Laplaceově transformaci označuje s. Toho se bude přidržovat i tato příručka. Přenosová matice H(s) je obecně matice racionálních funkcí rozměru ny,nu. Po vytknutí společného jmenovatele lze tuto matici vyjádřit ve formě
Num(s)
H(s) = ,
den(s)
kde den(s) je polynom - společný jmenovatel přenosové matice a
Num(s) je polynomiální matice čitatelů. Přirozeně se zde nabízí implementovat tuto polynomiální matici jako třírozměrnou matici. Bohužel, PC-MATLAB objekt tohoto typu nezná, tento nedostatek je třeba těžkopádně obcházet. Control System Toolbox podporuje pouze systémy s jedním vstupem a více výstupy. Např. uvažujme přenosovou matici3s + 2
s3 + 2s + 5
H(s) =
3s3 + 5s2 + 2s + 1
Přenosová matice spojitého systému bude reprezentována dvěma proměnnými:
Num = [ 0, 0, 3, 2]; den = [3, 5, 2, 1]; Pokud je některý z čitatelů menšího řádu než ostatní, musí být doplněn vpředu nulami.Přenosová funkce diskrétních systémů v Z-transformaci (v kladných mocninách z) je reprezentována pomocí matice čitatelů a vektoru jmenovatele stejně jako u spojitých systémů.
Používání přenosových funkcí v PC-MATLABu má tedy jednu podstatnou nevýhodu - není možné jednoduše pracovat se systémy s více vstupy a výstupy. Kromě toho proti stavovému popisu je práce s přenosovou funkcí numericky méně spolehlivá (kořeny polynomu jsou obvykle citlivější na perturbace koeficientů než vlastní čísla matic na perturbace jejích prvků).
Popis pomocí pólů, nul a zesílení. Přenosovou funkci potřebujeme mít někdy vyjádřenu tak, že čitatelé a jmenovatel jsou vyjádřeny jako součin kořenových činitelů. Pro systém s jedním vstupem a více výstupy si uveďme příklad:
3(s +12)
4(s + 1)(s + 2)
H(s) =
(s + 3)(s + 4)(s + 5)
Pro zavedení tohoto popisu do PC-MATLABu potřebujeme čtveřici proměnných: sloupcový vektor zesílení
k = [3; 4], matice nulz = [-12, -1;
inf, -2],
kde ve sloupcích jsou nuly jednotlivých přenosů. Pokud nejsou řády čitatelů stejné, doplní se u nižších nekonečná nula. Konečně třetí proměnnou je sloupcový vektor pólů
p = [-3; -4; -5];. Všimněte si, že v PC-MATLABu je zvykem zapisovat do řádkových vektorů koeficienty polynomu a do sloupcových vektorů kořeny polynomů.Zápis přenosové matice diskrétního systému ve formě nuly-póly-zesílení je úplně stejný jako pro spojité systémy.
Pokud potřebujeme rozvoj (skalárního) přenosu na parciální zlomky je možný p
omocí funkce residue, která je v základní knihovně funkcí PC-MATLABu.
10.2 Konverze modelů
Převod stavového modelu na přenosovou funkci
[num,den] = ss2tf(A,B,C,D,iu);
kde iu je index vstupu, který se bere v úvahu (Control System Toolbox podporuje přenosové funkce pouze s jedním vstupem a více výstupy - viz výše).
Převod přenosové funkce na stavový model
[A,B,C,D] = tf2ss(num,den);
Převod stavového modelu na tvar nuly-póly-zesílení
[z,p,k] = ss2zp(A,B,C,D,iu);
Převod popisu nuly-póly-zesílení
na stavový model[A,B,C,D] = zp2ss(z,p,k);
Převod přenosové funkce na tvar nuly-póly-zesílení
[z,p,k] = tf2zp(num,den)
Převod popisu nuly-póly-zesílení na přenosovou funkci
[num,den] = zp2tf(z,p,k);
Předchozí funkce platí stejně pro diskrétní jako pro spojité systémy. Převod mezi stavovým popisem spojitého systému na stavový popis ekvivalentního diskrétního systému s tvarovačem 0. řádu dělá funkce c2d:
[Ad,Bd] = c2d(A,B,T);
T je perioda vzorkování. Ad resp. Bd jsou matice dynamiky resp. vstupní stavová matice diskrétního systému. Matice výstupu resp. přímé vazby Cd a Dd závisí ještě na indexování výstupních vzorků a posunutí vzorkování vstupu a výstupu. Jejich výpočet je jednoduchý - je-li yk = y[(k+e)T], potom
[Ade,Bde] = c2d(A,B,e*T);
Cd = C*Ade; Dd = C*Bde + D;
viz [3]
Inverzní převod je prováděn funkcí D2C:
[A,B] = d2c(Ad,Bd,T);
Další funkce c2dm a d2cm jsou určeny k převodu spojitého systému na diskrétní volitelnou metodou (viz HELP) a c2dt převod spojitého systému s dopravním zpožděním na diskrétní.
10.3 Funkce pro analýzu systémů
Přehled funkcí pro analýzu v časové oblasti je v následující tabulce
step přechodová charakteristika
dstep diskrétní přechodová charakteristika
impulse impulsní charakteristika
dimpulse diskrétní impulsní charakteristika
initial spoj. odezva na počáteční podmínky
dinitial diskr. odezva na počáteční podmínky
lsim spojitá odezva na libovolný vstup
dlsim diskrétní odezva na libovolný vstup
covar kovariance odezvy na spoj.bílý šum
dcovar kovariance odezvy na diskr. bílý šum
Je zřejmé, že funkce s příponou
d jsou pouze diskrétními ekvivalenty spojitých funkcí, proto zde nebudou popisovány. Podívejme se nejdříve na základní funkci step.step(A,B,C,D,iu)
vykreslí odezvu systému (s nulovými počátečními podmínkami) na jednotkový skok na iu-tém vstupu. Rozsah časové osy a počet bodů charakteristiky se určí
automaticky. Pokud ho chceme definovat sami, volámestep(A,B,C,D,iu,T)
kde T je vektor časů s rovnoměrně rozdělenými body. Pokud chceme získat číselně hodnoty výstupní a stavové trajektorie, použijeme
[Y,X] = step(A,B,C,D,iu,T); nebo
[Y,X,T] = step(A,B,C,D,iu);
V tomto případě se graf nekreslí. Matice
Y resp. X mají ve sloupcích hodnoty výstupů resp. stavů v okamžicích, které odpovídají prvkům vektoru časů T. Pokud máme přenosový model systému, můžeme použít[Y,X] = step(num,den,T);
nebo
[Y,X,T] = step(num,den);
Použití funkce
impulse je shodné jako u funkce step.Odezva na obecný vstup se počítá pomocí funkce
lsim:lsim(A,B,C,D,U,T)
kreslí odezvu systému na vstup, který je dán maticí vstupů
U. Sloupce U obsahují hodnoty vstupů v ekvidistantních časových okamžicích, které odpovídají prvkům časového vektoru T. V případě nenulových počátečních podmínek použijemelsim(A,B,C,D,U,T,X0)
Chceme-li obdržet místo grafů číselné hodnoty na bodech trajektorie, voláme lsim jako funkci s výstupními argumenty [Y,X] podobně jako u funkce step.
Použití ostatních vyjmenovaných funkcí viz HELP.
Následující tabulka dává přehled funkcí pro analýzu ve frekvenční oblasti, které jsou v t
oolboxu k dispozici:bode charakteristiky v log. souřadnicích
dbode diskrétní charak. v log. souřadnicích
fbode rychlé spoj. bchar. v log. souřadnicích
margin amplitudová & fázová bezpečnost
nichols Nicholsův graf
dnichols diskrétní Nicholsův graf
ngrid rastr pro Nicholsův graf
nyquist charakteristika v kompl. rovině
dnyquist diskrétní charak. v komplexní rovině
sigma průběh singulárních čísel přen. matice
dsigma průběh singul. čísel diskr. přen. matice
Funkce
bode(A,B,C,D,iu) nebo bode(num,den)
kreslí amplitudovou a fázovou frekvenční charakteristiku v logaritmických souřadnicích. Frekvenční rozsah a počet bodů se volí automaticky. Pokud chceme zadat vlastní rozsah frekvencí, přidáme vstupní argument
w - vektor, obsahující úhlové frekvence v rad s-1 (libovolně rozložené), pro které budou body charakteristiky vypočteny (připomínám použití funkce logspace).Pokud nechceme grafy, ale přímo hodnoty charakteristik, zadáme
[Mag,phas
,w] = bode(...)kde matice w obsahuje úhlové frekvence, matice Mag obsahuje ve sloupcích amplitudy v jednotkách (ne dB!) pro frekvence odpovídající prvkům vektoru w, matice phas obsahuje fáze ve stupních.
Funkce fbode je obdobou bode, je rychlejší, ale méně přesná.
Funkce nyquist kreslí frekvenční charakteristiku v komplexní rovině. Volá se stejně jako bode;
[re,im,w] = nyquist(A,B,C,D,iu)
nebo[re,im,w] = nyquist(num,den)
vrací reálnou a imaginární část.
Funkce pro frekvenční charakteristiky diskrétních systémů mají předponu
d (vyčísluje se přenos pro z = exp(jwTs), Ts je perioda vzorkování). Podrobnější popis viz HELP.Další funkce pro analýzu systému
tzero přenosové nuly
ctrb matice řiditelnosti
obsv matice pozorovatelnosti
gram gramiány řiditelnosti a pozorovatelnosti
dgram diskrétní gramiány
dcgain zesílení
ddcgain zesílení diskrétního systému
damp relativní tlumení a přirozená frekvence
ddamp diskr. rel. tlumení a přirozená frekvence
printsys pěkné vypsání systému
dsort uspořádání diskr. vl. čísel podle absolutní
hodnoty
esort spojitých vlastních čísel podle real. části
Bližší podrobnosti viz HELP (gramián
y nejsou probírány v TDS aniTAŘ).
10.4 Sestavování modelů ze subsystémů, redukce řádu a stavové realizace
V Control System Toolboxu je k dispozici několik funkcí pro sestavování systému ze dvou nebo více subsystémů. Uvedené funkce podporují sestavování stavového popisu modelu složemého ze subsystémů. F
unkce series, paralel, feedback dává systém složený ze základních kombinací dvou systémů. Funkce append sloučí vstupy, výstupy a stavy dvou systémů bez jakéhokoli vzájemného propojení, takže všechny matice A, B, C, D výsledného systému jsou diagonální. Script file blkbuild slučuje několik systémů pomocí funkce append. Propojení mezi takto sloučenými systémy lze udělat pomocí funkce connect.Detailnější popis viz HELP.
append přidej dynamiku systému
augstate přidej k výstupům stavy
parallel paralelní spojení
series seriové spojení
feedback zpětnovazební spojení
cloop uzavři smyčku kolem systému
blkbuild sestav stavový popis z blok. dgm
connect propojení podle blokového diagramu
ssselect vyber subsystém z většího systému
ssdelete smaž vstupy, výstupy a stavy
rmodel generuj náhodný spojitý model
drmodel generuj náhodný diskr. model
ord2 generuj A, B, C, D pro systém 2.řádu
pade Padého aproximace dopravního zpoždění
Funkce pro redukci řádu modelu
balreal vyvážené realizace
dbalreal diskrétní vyváž. realizace
modred redukce řádu modelu
dmodred diskrétní redukce řádu
minreal minimální realizace
Minimální realizace systému (odstranění neřiditelných /
nepozorovatelných módů resp. krácení pólů a nul) se provádí pomocí funkce
minreal. Pro stavové modely je numericky nespololehlivá, zvláště pro vysoké řády. Lepší je použití tzv. vyvážených realizací systému (které však nejsou obsahem kursů TDS a TAŘ).Další speciální realizace
ctrbf nalezení řiditelné části
obsvf nalezení pozorovatelné části
canon transformace na kanonický tvar
ss2ss obecná podobnostní transformace
Způsob volání těchto funkcí viz HELP.
10.5 Funkce pro syntézu
V Control System Toolboxu jsou k dispozici pouze funkce pro návrh zesílení otevřené smyčky metodou geometrického místa kořenů (root-locus), stavovou zpětnou vazbu a stavovou injekci pozorovatele stavu. Funkce pro geometrické místo kořenů:
rlocus geometrické místo kořenů
rlocfind interaktivní určování zesílení
pzmap zobrazení pólů a nul
sgrid rastr přirozená frekvence, rel. tlumení
zgrid rastr rel.tlum a přiroz.frekv. v rovině z
Uveďme příklad na použití funkce
rlocus, která implementuje metodu geometrického místa kořenů. Tato metoda patří ke klasickým metodám návrhu regulačních obvodů. Je založena na nakreslení polohy pólů uzavřené smyčky pro měnící se zesílení otevřené smyčky. Úlohou návrháře je určit zesílení otevřené smyčky tak, aby póly uzavřené smyčky měly vhodné rozložení. Zpravidla žádáme maximální zesílení, pro které nepřekročí relativní tlumení předepsanou hodnotu (viz [3]). Tato metoda, která se dříve aplikovala velmi pracně s požitím pravidel pro kreslení asymptot, je velmi jednoduše aplikovatelná s použitím prostředku jako je PC-MATLAB. Dokonce je možno tuto funkci přeprogramovat tak, že bude kreslit geometrické místo kořenů pro jiný proměnný parametr regulátoru než je zesílení.num = 1; den = [[1 4 4 7 1];
rlocus(num,den)
Poté se nám vykreslí geometrické místo kořenů. Rozsah zesílení se volí automaticky (a předpokládá se záporná zpětná vazba). Pokud chceme zadat vlastní rozsah zesílení, pak doplníme vstupní argument o vektor K s těmito zesíleními. Kdybychom nechtěli geometrické místo nakreslit a chtěli jen hodnoty pólů pro různá zesílení, použili bychom
[R,K]=rlocus(num,den); nebo R=rlocus(num,den,K); vektor K obsahuje vypočtená resp. zadaná zesílení otevřené smyčky. Matice R má v řádcích póly uzavřeného obvodu odpovídající zesílením ve vektoru K.Příkazem
sgrid získáme v levé polorovině rastr - čáry konstantní přirozené frekvence (modul v komplexní rovině s) - soustředné kružnice se středem v počátku a relativního tlumení (cosinus doplňku argumentu do ) - čáry vycházející z počátku.Pro syntézu je velmi užitečná funkce
rlocfind.[R,K] = rlocfind(num,den)
vrátí polohu pólů a odpovídající zesílení bodu geometrického místa kořenů, který označíme myší. Předpokládá to však, že geometrické místo kořenů je na grafické obrazovce v okamžiku vol
ání rlocfind.Funkce rlocus a rlocfind předpokládají přirozeně pouze systém s jedním vstupem a výstupem. Fungují stejně pro diskrétní jako pro spojité systémy (v z-rovině jsou ovšem křivky konstantní přirozené frekvence a relativního tlumení jiné - použij zgrid).
Následující funkce jsou určeny pro výpočet stavové zpětné vazby a stavové injekce pozorovatele. Kromě metody přiřazení pólů uzavřené smyčky (funkce
acker a place) se jedná o lineárně kvadraticky (LQ) optimální návrhy regulátorů a pozorovatelů. Ty jsou náplní některých odborných předmětů ve vyšších ročnících a zde bude uveden pouze jejich výčetlqe návrh LQ optimálního estimátoru
lqe2 návrh LQ estimátoru Schurovou metodou
lqed návrh diskr. estimátoru se spoj. kritériem
lqew návrh obecného LQ estimátoru
lqr návrh LQ optimálního regulátoru
lqr2 návrh LQ regulátoru Schurovou metodou
lqrd návrh diskr. regulátoru se spoj. kritériem
lqry návrh LQ regulátoru s vážením výstupů
dlqe návrh diskr. LQ estimátoru
dlqew návrh obecného diskr. LQ estimátoru
dlqr návrh diskr. LQ optimálního regulátoru
dlqry návrh diskr. LQ regul. s vážením výstupů
acker jednorozměrové přiřazení pólů
place přiřazení pólů
Tyto funkce vracejí matice stavových zpětných vazeb a stavových injekcí. Následující funkce sestaví z těchto matic stavový model stavového regulátoru s estimátorem resp. estimátorů stavů.
reg sestaví model regulátoru s estimátorem
dreg sestaví model diskrétního regul. s est.
estim sestaví model spoj. estimátoru
destim sestaví model diskrétního estimátoru
11. Literatura
1. C.Moler, J.Little, S. Bangert: PC-MATLAB for MS-DOS Personal
Computers
2. A.Grace, A.J.Laub, J.N.Little, C. Thompson: Control System
Toolbox for use with MATLAB
3. J.Štecha: Teorie automatického řízení I. Skriptum ČVUT,
Praha 1990.