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 makra 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 obrazovce vypíše

A =

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

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žností :

»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átory

Relač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 vymezeny 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');

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 (zkuste 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.mat

ve 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 souboru

pojmenovaném temp.mat

»load temp Nahraje data ze souboru temp.mat - může být i

ASCII 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)

kde 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říkazy

end

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říkazy

end

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í text

function [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 matici

3s + 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 nul

z = [-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ý pomocí 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áme

step(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žijeme

lsim(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 toolboxu 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ány nejsou probírány v TDS ani

TAŘ).

 

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ů. Funkce 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ýčet

lqe 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.