Simulace systemu

Transkript

Simulace systemu
VUT FSI v Brně
SIMULACE SYSTÉMŮ
RNDr.Ing. Jiří Šťastný, CSc.
Doplňkový učební text
Předmluva
Tento učební text je určen zejména pro posluchače studijního oboru Aplikovaná
informatika a řízení v kombinovaném bakalářském typu studia na Fakultě strojního
inženýrství VUT v Brně. Text by měl poskytnout základní učební pomůcku pro přednášky i
cvičení z předmětu Simulace systémů v 5. semestru studia výše uvedeného oboru. Předmět
Simulace systémů navazuje na znalosti, získané především v předmětech Matematika a
Informatika v předchozích semestrech studia na uvedené fakultě.
Autor děkuje za podporu z projektu rozvoje bakalářských programů na Fakultě strojního
inženýrství VUT v Brně a za možnost začlenit do textu odborné poznatky získané při řešení
výzkumného záměru CEZ: J22/98: 261100009 "Netradiční metody studia komplexních a
neurčitých systémů".
Všem čtenářům budu vděčen za veškeré připomínky k formálním i věcným
nedostatkům v textu.
Brno, listopad 2002
Autor
Obsah
Str.
Úvod do simulace systémů
1
Základy teorie systémů
6
Základy MATLABu
23
Modul Simulink
28
Tvorba modelu
53
Obrazový přenos
58
Graf frekvenční charakteristiky v komplexní rovině
68
Přechodová funkce
69
Odezva systému na budicí signál
72
Zobrazení přenosu
75
Návrh zpětné vazby s kompenzátorem
81
Bloková algebra
83
Převod spojitého přenosu na diskrétní
87
Převod diskrétního přenosu na spojitý
88
Zadání náhodných hodnot
91
Diskrétní identifikace
95
Úvod do problematiky simulace systémů
Vznik discipliny simulace systémů na počítačích vyvolaly praktické potřeby aplikované
kybernetiky. Již řadu let se kromě běžných požadavků na výpočty různých úloh objevují
zadání úloh typu: zadavatel chce studovat soustavu, pro kterou má její matematický popis.
Chce zjistit, zda je matematický popis originálu dostatečně věrný, jak jej má upravit a doplnit,
jaké má provést zásahy do systému, jestliže chce, aby se systém chovat tak, jak požaduje.
Dalšími běžnými otázkami jsou např. otázky, nakolik je možno věřit výsledkům, které
dostaneme při řešení matematického zápisu systému, je-li matematický zápis vůbec
dostatečný, jak daleko je chování systému od optimálního chování atd. Tyto kvalitativně
nové požadavky mění úlohu programátora i počítače. Programátor se stává spoluřešitelem
úlohy a počítač už není výpočetním prostředkem ve smyslu logaritmického pravítka nebo
kalkulačky, ale stává se modelem originálu vybudovaným na základě matematického popisu
systému. Práce spojená s vytvořením matematického popisu a s jeho realizací na počítači,
dostala název modelování, matematické modelování, kybernetické modelování, simulace
systémů apod.
Podstatným rysem simulace je spojení výpočetní činnosti se studiem systému.
Programátor se stává spolutvůrcem matematického popisu systému, sleduje a účastní se všech
rozborů, které by formálně patřily pouze k úkolům zadavatele. Z uvedeného je zřejmé, že
programátor by měl mít znalosti z fyziky, teorie počítačů, aplikované matematiky. Pro složité
úlohy z modelování je optimální tým pracovníků - programátorů - inženýrů a matematiků. Pro
menší úlohy je optimální, je-li zadavatel úlohy sám programátorem.
Během let se při modelování systémů hromadila řada poznatků a jejich postupné
zobecňování dalo základ vzniku simulace jako samostatné discipliny v rámci technické
kybernetiky.
Teoretické základy simulace vycházejí z teorie počítačů a jejich programování, z teorie
automatické regulace, pravděpodobnosti a statistiky, numerické matematiky, z teorie stability
diferenciálních rovnic, teorie her, teorie hromadné obsluhy a z dalších teoretických disciplin.
Proto čerpám názvosloví simulace systémů především z těchto oborů a pouze je přizpůsobuji
potřebám simulace.
Výpočetní prostředky pro simulaci systémů
Dlouhou dobu bylo modelování systémů doménou analogového počítače. Bylo tomu tak
proto, že tento výpočetní prostředek zajišťoval potřebnou variabilnost při modelování,
dovoloval imitaci různých mezních podmínek, havarijních stavů a hypotetických situací a
umožňoval snadné budování a zdokonalování matematických modelů. Přitom všem bylo
programování analogového počítače snadné a přehledné. Metody analogového programování
vytvořili inženýři a celým jeho pojetím vybudovali optimální způsob komunikace mezi
výpočetním prostředkem a uživatelem.
1
Toto monopolní postavení analogových počítačů pro potřeby modelování zpočátku
neohrozil ani první nástup masové exploatace číslicových počítačů, poněvadž tento druh
výpočetní techniky byl přes řadu výhod pro potřeby modelování těžkopádný. Programové
vybavení číslicových počítačů budovali především matematikové a jeho pojetí bylo vzdálené
běžnému inženýrskému uživateli. Ani přechod od programování ve strojových kódech k
programovacím jazykům se v oblasti modelování markantně neodrazil a stěžejními
výpočetními prostředky pro modelování systémů zůstaly zpočátku nadále analogové počítače.
Rostoucí rozsah modelovaných soustav a jejich stále dokonalejší identifikace
vyžadovaly stále rozsáhlejší a kvalitnější analogovou techniku. Vznikly však potíže spojené s
programováním na rozsáhlých počítačích jako např. vhodná formalizace programování,
operace s měřítky, ladění (oživování) programů, kompenzace chyb, statické testy atd. Řada
potíží byla brzy vyřešena pomocí moderních metod programování a využitím číslicových
počítačů pro přípravu úlohy (statické testy, nastavování měničů ap.).
Při řešení rozsáhlých úloh se často ukazovala potřeba opakovaného výpočtu, desítky a
stovky alternativních řešení nebyly vzácností. Bylo zjevné, že je nutno zvýšit rychlost
repetičních výpočtů. V řadě úloh se některé proměnné pohybovaly ve značném rozsahu a byly
omezenou rozlišovací schopností analogových počítačů.silně limitovány na úkor celkové
přesnosti výpočtu. Tak začaly vznikat jednotky pracující v tzv. hybridním kódu. Řešení výše
uvedených potíží však mělo za následek růst ceny modernizovaného analogového počítače a s
ní i ceny strojového času, který je pro potřeby modelování vždy neúměrně delší než pro
ostatní úlohy.
Řada úloh jako parciální diferenciální rovnice, algebraické rovnice, statistické úlohy,
integrální rovnice ap. nebyly pro potřeby modelování uspokojivě na analogovém počítači
zvládnuty.
Nasnadě byla otázka spojení výhod číslicového a analogového počítače. Spojením
analogového pojetí standardních bloků a numerického provádění operací v bloku vznikly
číslicové diferenciální analyzátory. Jejich přesnost byla sice vyšší než u klasického
analogového počítače, byly však pomalejší a dražší a tak nenašly širšího uplatnění jako
univerzální výpočetní prostředky. Očekávaného efektu bylo dosaženo až spojením rychlého
analogového počítače (iteračního diferenciálního analyzátoru) s rychlým číslicovým
počítačem. Tak vznikla hybridní výpočetní soustava - hybridní počítač. Z hlediska
přístrojového se objevily nové problémy s rychlým přenosem operačních i řídicích signálů
mezi oběma částmi hybridní soustavy, ale díky existenci rychlých převodníků a multiplexerů
byl tento problém vyřešen. Z hlediska hardware hybridní počítač pokryl beze zbytku všechny
požadavky modelování. Na jeho rychlém vývoji měly hlavní podíl nejlépe financované úseky
vědy, kosmický a raketový výzkum. Záhy se však hybridní počítače uplatnily i v nukleární
fyzice, biologii, lékařství ap. Otevřenou otázkou zůstala cena hybridní soustavy.
Paralelně s modelováním na hybridním počítači se vyvíjelo modelování na číslicovém
počítači. Uživatelé číslicových počítačů brzy zjistili, že forma zadávání ú1lohy a interpretace
výsledků musí být pro potřeby modelování stejné, jako u analogového počítače - jednoduchá,
inženýrská.
2
Přes třicet let již vznikají speciální simulační jazyky, které zajišťují modelování
dynamických systémů spojitých (diferenciálních, diferenčních, smíšených) i diskrétních
(soustavy s frontami a omezenou kapacitou propustnosti - hromadná obsluha).
V minulosti mohly být tedy problémy modelování řešeny na modernizovaném rychlém
analogovém počítači nebo na hybridním počítači. V současné době je tato problematika
řešena pomocí simulačních jazyků na rychlém číslicovém počítači.
Simulační jazyky
Cestou. která zabezpečuje vhodný výpočetní prostředek pro simulaci systému. byla
výstavba specializovaných programovacích prostředků pro simulaci na číslicových počítačích.
Tyto programovací prostředky dnes známe pod názvem simulační jazyky. Koncepce
simulačních jazyků vycházejí z uživatelských hledisek a snaží se zabezpečit především tyto
vlastnosti jazyka:
!
Umožnit zadávání úlohy pomocí blokových schémat nebo ve tvaru standardně upravených
rovnic popisujících systém a nebo ve formě smíšené (bloky i rovnice).
!
Poskytovat dostatek vhodně agregovaných bloků (příkazů). využívajících širokého výběru
numerických metod.
!
Dovolovat zásahy do programu v průběhu řešení. tj. i uvnitř jednoho simulačního běhu.
Všechny tyto modifikace musí být snadno kontrolovatelné a registrovatelné.
!
Zajistit alespoň minimální automatické zlepšování modelu (iterace) podle zadaných
kritérií a strategií.
!
Zabezpečit snadnou a jednoznačnou komunikaci mezi uživatelem a počítačem (nové
vstupní a výstupní prostředky jako světelná pera, klávesnicové vstupy. grafické
zobrazovací jednotky atd. jsou pro zvýšené nároky na komunikaci zvláště přínosnými).
Mít dokonale vybudovanou diagnostiku. která předpokládá "nekvalifikovaného" uživatele.
!
Simulační jazyky jak pro spojité tak pro diskrétní systémy se postupně standardizovaly.
Ty, které vznikly ve druhé polovině šedesátých let. byly již poměrně dokonalé a měly téměř
všechny vyjmenované vlastnosti. Řada jazyků se vyskytuje v několika modifikacích, které
většinou respektují vývoj hardware počítače, pro který byly původně navrženy. Verze
vyvinuté v posledních letech již předpokládají dostupnost moderních vstupních a výstupních
zařízení číslicového počítače. Využití simulačních jazyků pro výstavbu modelů pracujících v
reálném čase bylo však velmi problematické. Teprve ve spojení se speciálním hardware mají
simulační jazyky v "real time" modelování své místo. Jde však o velmi jednoduché,
maximálně časově efektivní programové prostředky. V těchto jazycích jsou použity
nejjednodušší integrační formule a formálně jsou blokově orientovány.
3
Simulační výpočet spojité soustavy představuje především opakované řešení soustavy
diferenciálních rovnic, kdy jedno řešení od druhého se liší nějakou modifikací programu. Jde
o přestavení rovnic a parametrů. Program musí zajistit snadnost těchto změn. Pokud
přicházíme na počítač s hotovým, definitivním matematickým zápisem a budeme řešit
konkrétní zadanou variantu úlohy, nepotřebujeme simulační jazyk, výhodně použijeme
obecný programovací jazyk.
Vlastní název simulační jazyk bývá chápán nepřesně, lépe by bylo hovořit o simulačním
systému. Vlastní simulační jazyk představuje množinu příkazů pro popis simulovaného
systému a řídicí příkazy pro práci se simulačním modelem. Výkonné jádro programovacího
systému tvoří procesor, který zabezpečuje posloupnost zpracování úlohy, vstupy a výstupy
dat. Všimněme si role procesoru podrobněji. Výpočet funkcí, které musí zabezpečit:
♦ Načtení popisu modelu
♦ Analýza a překlad
♦ Výpis programu a výpis chyb
♦ Třídění a nalezení implicitní smyčky
♦ Načtení parametrů a počátečních podmínek
♦ Výpočet funkcí a stavových proměnných, včetně iteračního výpočtu implicitních smyček
♦ Zkouška konvergence implikátorů
♦ Obsluha kroku výpočtu a výstupů
♦ Výstup ve formě tabulky, grafu, obrazu
♦ Výpočet nových proměnných (použití numerické integrační metody)
♦ Závěr výpočtu.
Vlastní závěr výpočtu jakož i načtení parametrů může představovat "samostatné"
rozsáhlé výpočty související např. s nadřazenou strategií přestavování modelu (optimalizace,
identifikace, náhodné pokusy atd.). Je vidět, že numerické řešení diferenciálních rovnic je
jedním z mnoha úkolů procesoru simulačního systému. Funkční zásoba reprezentuje vybavení
systému standardizovanými "funkčními bloky". Jsou to výše zmíněné integrátory
diferenciálních rovnic, funkční měniče (y = f(x)) a funkční generátory (y = f(t)). V této části
programového vybavení se nejlépe odráží rozdíl mezi blokově a "rovnicově" orientovaným
simulačním jazykem.
Od 60. let vznikla velká řada simulačních jazyků. Nejznámější a nejvíce provozované
byly jazyky CSMP 1130 (pro malý počítač) a CSMP S 360 (pro tehdy velký systém). V
důsledku normalizačních snah vznikl jazyk CSSL a dodnes existuje řada jeho variant a
mutací. Lze říci, že všechny spojité simulační jazyky, které vznikly v posledních dvaceti
letech, jsou dokonalé a vyhoví uživatelským požadavkům. Řada z nich dovoluje výběr deseti i
více integračních formulí, včetně specializovaných a má bohatou funkční zásobu
nejrůznějších nelinearit.
4
Vymezení pojmu "simulace systémů"
Obsah pojmů vědeckého jazyka a jejich termínová fixace je vždy záležitostí dohody, i
když ta má většinou "tichý" charakter. Zvláště v souvislosti s bouřlivým rozvojem vědy a
techniky v posledních desetiletích se však stále častěji opakuje historie, kdy stejnými termíny
jsou různými autory fixovány různé pojmy, či naopak stejné pojmy jsou slovně označovány
jednotlivými autory zcela odlišně. Jediným řešením je v takovém případě pokus o přijetí
dohody na základě otevřené diskuse k základnímu návrhu. Důkazem, že takové řešení je
možné, je Dohoda o chápání pojmu "simulace systémů", která byla přijata na půdě Komitétu
aplikované kybernetiky v roce 1985. Dohoda má následující znění:
1. Simu1ace systémů je specifická forma procesu poznání
Simulaci systémů lze použít při zkoumání objektů i při projektování objektů, ale také při
výuce, výcviku a v dalších případech sdělování poznatků a hypotéz.
2. Předmětem simulace systémů jsou systémy vymezené na objektech poznání a jejich pohyb
(ve smyslu jakékoliv změny v čase)
Předmětem simulace systémů mohou být systémy vymezené na objektech jak
existujících, tak projektovaných, i systémy, které nemají bezprostřední vztah k objektivní
realitě.
3. Základním principem simulace systémů je vyvozování soudů o simulovaném systému
pomocí experimentů s jeho simulačním modelem
Metoda experimentů se simulačním modelem odlišuje simulaci systémů od jiných
forem procesu poznání, a proto považujeme tuto metodu za simulaci systémů v užším slova
smyslu. Soudy vyvozené na základě jejího použití se uplatňují ve všech fázích iterativně
probíhajícího procesu simulace systémů. Těmito fázemi jsou:
!
vymezení objektu poznání (vydělením zkoumaného objektu z ostatního světa, resp.
stanovením požadavků na projektovaný objekt a určením použitelných. dílčích objektů)
!
vymezení simulovaného systému na objektu poznání (volbou hlediska, ze kterého je
objekt nazírán, a rozlišovací úrovně)
!
vytvoření aktuální představy o simulovaném systému a jeho pohybu (tj. formulace
hypotézy o zkoumaném systému, resp. zpracování projektu systému a identifikace
použitých subsystémů)
!
vytvoření simulačního modelu (tj. jeho návrh a realizace)
!
ověření správnosti simulačního modelu (tj. ověření, zda model odpovídá aktuální
představě o simulovaném systému a jeho pohybu)
!
ověření pravdivosti simulačního modelu (tj. verifikace hypotézy o zkoumaném systému,
resp. ověření, zda vyprojektovaný systém splňuje stanovené požadavky a dá se prakticky
realizovat)
5
!
další použití ověřeného simulačního modelu v procesu poznání místo simulovaného
systému (např. k prognózování, vědecké predikci, optimalizaci projektu, výuce, výcviku
apod.).
4. Simulační model je systém, který napodobuje aktuální představu o simulovaném systému
a jeho pohybu a je vymezen na umělém hmotném objektu vytvořeném nebo
přizpůsobeném k tomuto účelu
Návrh simulačního modelu může, ale nemusí vycházet z matematického popisu
(modelu) aktuální představy o simulovaném systému a jeho pohybu. Za simulační
považujeme pouze takový model, který při napodobování pohybu simulovaného systému
zachovává stejné uspořádání změn v čase. Do třídy simulačních modelů zahrnujeme i jiné
modely než modely na počítačích, s výjimkou modelů založených na geometrické podobnosti.
Základy teorie systémů
Vznik moderní teorie systémů byl vyvolán zejména růstem složitosti technických a
ekonomických objektů a jejich řídicích soustav. Roste obtížnost řešení problémů z oblasti
projektování technických systémů řízení hospodářských soustav. Teorie systémů je pomezní
vědní disciplína z oblasti systémové vědy. Systémová věda je poměrně nová vědní oblast,
která se zformovala v období vědeckotechnické revoluce. Zahrnuje kromě teorie systémů také
kybernetiku, systémovou analýzu a syntézu, systémové inženýrství, operační výzkum a
některé další systémové disciplíny. Teorie systémů je v podstatě určitá zobecněná teorie
modelování systémových vlastností hmoty. V současné době se užívá jako základní
metodologický nástroj ve všech ostatních disciplínách systémové vědy. Systémová věda má
široký okruh aplikací jak v technice, tak v oblasti řízení ekonomiky.
Přesné vymezení předmětu teorie systémů je dosti obtížné. V současné době jde o
celkem rozsáhlou vědní disciplinu. Existuje řada různých názorů na koncepci této teorie, které
jsou často odlišné. Různí autoři mají na předmět teorie systémů různé názory. Nesporně však
jde o teorii, která má do značné míry formální, logicko-matematickou a metodologickou
povahu. Předmětem teorie systémů je studium abstraktních systémů, které mají význam pro
analýzu systémových vlastností hmoty. Analýza systémových vlastností hmoty se zaměřuje
obvykle jednak na vyšetřování statických strukturních vlastností a dále na vyšetřování
dynamických vlastností (chování) a složitých kauzálních vztahů, které se projevují v jejím
pohybu. Teorie systémů nám usnadňuje zejména studium množin různorodých spojení příčin
a následků, které se vyskytují v množinách rozmanitých jevů (prvků), jež na sebe vzájemně
působí. Tato teorie vznikla prakticky z pokusů o sjednocení vědeckých pojmů, principů a
modelů, které by mohly posloužit úsilí o zvládnutí dynamických soustav s těsnými a
bohatými vzájemnými vazbami mezi jejich částmi.
Teorie systémů nám značně usnadňuje řešení složitých technických a ekonomických
problémů. Musíme si však uvědomovat, že jde pouze o nástroj, který může zobrazovat reálné
objekty pouze zjednodušeně. Každý reálný objekt má velmi mnoho vlastností a při
komplexním řešení daného problému lze uvažovat velmi mnoho projevů objektu.
6
Každý systémový model může zobrazovat jen poměrně malou část těchto projevů. Proto
obvykle předpokládáme, že faktory, které jsme do systémového modelu nezahrnuli,
neovlivňují vývoj modelovaného procesu do té míry, že naše závěry se stanou
nepoužitelnými. Splnění tohoto předpokladu musíme vždy prověřovat. Obecné systémové
modely nejsou proto samy o sobě dostatečnými nástroji, které by umožňovaly práci s
objektivní realitou a vedly k úplnému pochopení vlastností reálných objektů.
V našich úvahách budeme vycházet z pojetí obecného kybernetického systému, které
vede k dekompozici zkoumaného systému na prvky a vazby mezi nimi. Toto pojetí je velmi
rozšířené v mnoha vědních oborech a je rovněž blízké technickému pohledu na zkoumané
objekty. Pro vymezení základních pojmů použijeme jednoduchého matematického aparátu
(množin, relací, funkcí), jenž je funkční nejen z hlediska výstavby abstraktních modelů, ale
má rovněž význam pro vlastní programování simulačních modelů, které jsou v podstatě přísně
formalizovaným zápisem daným syntaxí a sémantikou příslušného programovacího jazyka.
Prvek systému
Prvky systému jsou obecně elementární, dále nedě1itelné části systému, které
představují jeho rozkladové (dekompoziční) složky. Prostřednictvím prvků popisujeme
strukturální vlastnosti systému. Chování prvků ve vzájemných interakcích, které vyplývají ze
struktury systému, určuje chování celého systému.
Systém S je tvořen konečnou množinou prvků:
U = { u1, u2, . . . , un}
kterou nazýváme universum systému S. Libovolný prvek systému ui ∈ U je vymezen
následujícími atributy:
a) množina
X( ui ) = { xi1, xi2, . . . , xiki }
vstupních proměnných prvku ui
b) množina
S( ui ) = { si1, si2, . . . , sili }
stavových proměnných prvku ui
c) množina
Y( ui ) = { yi1, yi2, . . . , yimi }
výstupních proměnných prvku ui
d) množiny určující obory hodnot vstupních, stavových a výstupních proměnných - tzv.
abecedy vstupních, stavových a výstupních proměnných.
e) množiny kombinací hodnot vstupních, stavových a výstupních proměnných - tzv. vstupní,
stavové a výstupní prostory prvku ui :
Ω I ( ui ) = { ( xi1, xi2, . . . , xiki ) }
vstupní prostor prvku ui
Ω S ( ui ) = { ( si1, si2, . . . , sili ) }
stavový prostor prvku ui
Ω O ( ui ) = { ( yi1, yi2, . . . , yimi ) }
výstupní prostor prvku ui
7
Prvky těchto prostorů nazýváme vstupní, stavové a výstupní vektory prvku ui , které jsou
reprezentovány uspořádanými q-ticemi (q = ki , resp. li , resp. mi) prvků abeced
vstupních, stavových a výstupních proměnných prvku ui .
f) Časová množina Ti . Prvky této množiny t ∈ Ti reprezentují časové okamžiky, ve
kterých se mění hodnoty vstupních, stavových a výstupních proměnných prvku ui .
g) Dvojice zobrazení, která popisuje změny stavových a výstupních vektorů prvku ui v čase
(obecně hodnoty stavových a výstupních proměnných prvku ui čase t2 závisejí na
hodnotách vstupních a stavových proměnných v čase t1 , přičemž t2 ≥ t1 ) :
Ω I ( ui ) × Ω S ( ui ) × Ti
→
Ω O ( ui ) × Ti
Ω I ( ui ) × Ω S ( ui ) × Ti
→
Ω S ( ui ) × Ti
Dvojici zobrazení, popisujících změny stavových a výstupních vektorů prvku ui
označíme symbolem zi a nazveme chováním prvku ui . Zobrazení zi specifikují funkční
obsah prvku ui a proto je můžeme chápat jako sémantiku prvku ui .
Prvky se stejným chováním
Nyní stanovíme podmínky, za kterých můžeme pokládat chování zi prvku ui a
chování zj prvku uj za stejné.
Vyjdeme-li z definice chování prvku, pak je podmínkou pro shodnost chování dvou
prvků ui a uj shodnost zobrazení zi a zj . Tato podmínka však implikuje shodnost
definičních oborů a oborů hodnot zobrazení zi a zj. Z hlediska modelování, kdy je volba
konkrétních kódování podnětů, stavů, či reakcí prvků závislá na prostředí, v němž model
vytváříme, je tato implikace příliš omezující. Abychom toto omezení odstranili, musíme
nejdříve transformovat vstupní, výstupní a stavový prostor prvku ui tak, aby byl shodný s
příslušným prostorem prvku ui a teprve pak můžeme srovnávat jejich chování.
Označme symbolem A  počet prvků množiny A a uvažujme dva prvky ui a uj
systému S, o nichž předpokládáme, že X( ui )  = X( uj ) ,  S( ui )  =  S( uj )  a
Y( ui )  =  Y( uj ) , tj., že vstupní, stavové a výstupní vektory prvku ui mají stejný počet
složek jako vstupní, stavové a výstupní vektory prvku ui . Dále předpokládejme existenci
bijektivních zobrazení ϕij , δij , ψij , τij (bijekce znamená „vzájemně jednoznačné zobrazení
na“):
ϕij :
Ω I ( ui ) →
Ω I ( uj )
δij :
Ω S ( ui ) →
Ω S ( uj )
ψij :
Ω O ( ui ) →
Ω O ( uj )
τij :
Ti
→
Tj
Zobrazení ϕij , δij , ψij lze vytvářet na základě korespondence abeced vstupních, stavových
a výstupních proměnných prvků ui a ui jejichž prostřednictvím jsou kódovány vstupy, stavy
a výstupy prvků systému.
8
Zobrazení τij zachovává uspořádání, tzn., že pro libovolné t1, t2 ∈ Ti pro které platí t2 ≥ t1 ,
je τij (t2 ) ≥ τij (t1 ) .
Nechť zi je chování prvku ui, zj je chování prvku uj a nechť zobrazení ϕij , δij , ψij
jsou bijektivní zobrazení definovaná mezi vstupním, stavovým a výstupním prostorem prvku
ui a prvku uj a τij je prosté zobrazení definované mezi časovými množinami Ti a Tj . Prvky
ui a uj mají stejné chování, což se značí zi ≡ zj , jestliže pro každý prvek [x, s, t]
definičního oboru zobrazení zi a jeho obraz [y, t1], resp. [s, t2] v zobrazení zj platí:
[ ϕij (x ), δij (s ), τij (t ) ] →
[ ψij (x ), τij (t1 ) ]
[ ϕij (x ), δij (s ), τij (t ) ] →
[ δij (s ), τij (t2 ) ]
Charakteristika systému
Mějme systém S obsahující prvky u1, u2, . . . , un , které tvoří univerzum U systému S.
Jsou-li ui a uj dva libovolné prvky systému S, zajímá nás, zda je chování prvku ui závislé
na chování prvku uj . Nejdříve zodpovíme otázku „přímé závislosti“ definováním vazeb mezi
prvky systému realizovaných propojením některých vstupních proměnných prvku ui s
některými výstupními proměnnými prvku uj .
Nechť X(ui) je množina vstupních proměnných prvku ui a Y(uj) je množina
výstupních proměnných prvku uj . Propojení prvku ui s prvkem uj lze popsat jako binární
relaci Rij která je definovaná takto:
Rij = { (xik , yjl) ; vstupní proměnná xik prvku ui je propojena s výstupní proměnnou yjl
prvku uj }
Příklad binární relace Rij pro prvky ui a uj je na následujícím obrázku.
Rij = { (xi1 , yj2), (xi2 , yj3), (xi3 , yj4), (xi4 , yj5) }
9
Rii = ∅
Rjj = { (xj1 , yj5) }
Dále budeme předpokládat, že libovolná vstupní proměnná může být propojena
nanejvýš s jedinou výstupní proměnnou. Tento předpoklad vylučuje možnost vzniku
konfliktních situací při interakci prvků. Relace Rij potom implikuje existenci funkce
fij: X j ( ui ) → Y i ( uj ) , kde:
X j ( ui ) ⊆ X ( ui ) ; X j ( ui ) = { xik ; (xik , yjl) ∈ Rij pro všechna yjl }
Y i ( uj ) ⊆ Y ( uj ) ; Y i ( uj ) = { yjl ; (xik , yjl) ∈ Rij pro všechna xik }
fij (xik ) = { yjl ; (xik , yjl) ∈ Rij }
Funkce fij představuje zobrazení na množinu Y i ( uj ). Množina X j ( ui ) reprezentuje
ty vstupní proměnné prvku ui jejichž prostřednictvím chování prvku ui přímo závisí na
chování prvku uj. Množina Y i ( uj ) reprezentuje ty výstupní proměnné prvku uj které přímo
ovlivňují chování prvku ui.
Pro počet prvků množiny X j ( ui ) a Y i ( uj ) plati:
 X j ( ui )  ≥  Y i ( uj ) 
Je-li Y i ( uj.) = ∅ , pak také Xj ( ui.) = ∅ , což znamená, že prvek ui není propojen
(není přímo závislý) s prvkem uj . Je-li i = j , pak Y i ( uj.) ≠ ∅ implikuje propojení prvku ui
se sebou samým. Tento specifický typ propojení prvku ui se nazývá jednoduchá zpětná vazba
prvku ui .
Propojení dvou prvků se dá snadno rozšířit na propojení všech prvků systému:
X = ∪ X(ui) pro i ∈ < 1; n >
množina všech vstupních proměnných prvků systému.
Y = ∪ Y(ui) pro i ∈ < 1; n >
množina všech výstupních proměnných prvků systému.
Relace R, která definuje propojení vstupů a výstupů všech prvků univerza U, se nazývá
charakteristika systému a je definována takto:
R = { (xik , yjl) ; xik ∈ X(ui) , yjl ∈ Y(uj) pro i, j ∈ <1; n>, 1≤ k ≤ ki , 1≤ l ≤ lj a
(xik , yjl) ∈ Rij }
Charakteristiku systému R lze vyjádřit pomocí binární relace Rij takto:
R = ∪ Rij
pro i, j ∈ < 1; n >
Charakteristika systému popisuje strukturu systému na nejnižší úrovni jeho
dekompozice. Často se charakteristika systému udává ve tvaru tzv. incidenční matice, která
představuje maticovou reprezentaci binární relace.
10
Přiklad:
Mějme systém, znázorněný na následujícím obrázku. Budeme předpokládat, že
vstupní a výstupní proměnné jednotlivých prvků systému jsou indexovány
zleva doprava.
Univerzum systému :
U = { u1, u2, u3, u4, u5}
Množiny vstupních a výstupních proměnných prvků systému :
X( u1 ) = { x11, x12, x13, x14 }
Y( u1 ) = { y11}
X( u2 ) = { x21, x22 }
Y( u2 ) = { y21, y22 }
X( u3 ) = { x31, x32 }
Y( u3 ) = { y31, y32, y33 }
X( u4 ) = { x41}
Y( u4 ) = { y41, y42 }
X( u5 ) = { x51}
Y( u5 ) = { y51, y52 }
Charakteristika systému :
R = { (x11 , y21), (x13 , y42), (x14 , y33), (x21 , y51), (x31 , y52), (x22 , y22), (x32 , y11),
(x41 , y32), (x51 , y31) }
Důležité jsou rovněž otázky strukturální podobnosti systémů. Tato problematika vede
někdy pouze k vyšetřování existence, resp. neexistence strukturální vazby mezi prvky daného
systému. Z toho důvodu se zavádí abstraktnější vymezení pojmu propojení prvků systému,
popsané relací R ⊆ U2, která je definována takto:
R = { (ui , uj) ; ui , uj ∈ U a existuje prvek r ∈ R tak, že r = (xik , yjl) , kde xik ∈ X(ui) ,
yjl ∈ Y(uj) }
11
Relace R určuje takové dvojice prvků systému, mezi nimiž existuje vazba. Pro
předchozí příklad systému má relace R následující podobu:
R = { (u1 , u2), (u1 , u4), (u1 , u3), (u2 , u5), (u3 , u5), (u2 , u2), (u3 , u1), (u4 , u3), (u5 , u3) }
Pojem systém
Systémem S rozumíme dvojici: .
S = ( U, R )
kde U je univerzum systému S a R je charakteristika systému S .
Atributy jednotlivých prvků systému určují atributy celého systému S následujícím
způsobem:
X = ∪ X(ui) pro i ∈ < 1; n >
množina vstupních proměnných všech prvků systému.
Y = ∪ Y(ui) pro i ∈ < 1; n >
množina výstupních proměnných všech prvků systému.
S = ∪ S(ui) pro i ∈ < 1; n >
množina stavových proměnných všech prvků systému.
Z = ∪ Zi pro i ∈ < 1; n >
chování všech prvků systému S .
T = ∪ Ti pro i ∈ < 1; n >
časová množina systému S .
Okolí systému
Pod pojmem okolí systému budeme rozumět takovou entitu, která je zdrojem podnětů
na systém a která přijímá reakce systému na tyto podněty. Okolí systému S značíme
symbolem u0 a v některých případech je považujeme za prvek univerza systému S , tj.
u0 ∈ U .
Okolí systému je charakterizováno následujícími atributy:
a) množina
V = { v1, v2, . . . , vp }
b) množina
W = { w1, w2, . . . , wq }
vstupních proměnných celého systému S
výstupních proměnných celého systému S
c) prvky množiny V nabývají hodnot z množiny I , která se nazývá vstupní abeceda systému
d) prvky množiny W nabývají hodnot z množiny O, která se nazývá výstupní abeceda
systému
e) vektor (v1, v2, . . . , vp ) hodnot ze vstupní abecedy I , tj. podnět z okolí na systém
12
f) vektor (w1, w2, . . . , wq ) hodnot z výstupní abecedy O , tj. reakce systému na podnět
g) Ω I ( u0 ) = { ( v1, v2, . . . , vp ) }
prostor podnětů
h) Ω O ( u0 ) = { ( w1, w2, . . . , wq ) }
prostor reakcí .
Strukturu propojení okolí u0 a systému S zachycuje následující obrázek.
Mějme množinu vstupních proměnných
všech prvků systému X a množinu
výstupních proměnných všech prvků
systému Y. Pak relace
QI ⊆ X × V
popisuje strukturu vstupní vazby mezi
okolím a systémem následujícím
způsobem:
r ∈ QI , r = (xik , vj) ,
i
vstupní proměnná x k ∈ X(ui) prvku ui
je ztotožněna se vstupní proměnnou
vj ∈ V systému S.
Obdobně relace:
Q0 ⊆ W × Y
popisuje strukturu výstupní vazby mezi
systémem a okolím tímto způsobem:
r ∈ QO , r = (wi , yjl) ,
j
výstupní proměnná wi ∈ W systému S je ztotožněna s výstupní proměnnou y l ∈ Y(uj)
prvku uj.
Strukturu vzájemné vazby systému S a okolí u0 popisuje binární relace:
Q = QI ∪ Q0
Analogicky s definicí relace R můžeme definovat abstraktnější relaci Q ⊆ (U ∪ {u0})
následujícím způsobem:
Q = { (ui , uj) ; ui , uj ∈ (U ∪ { u0 }) a existuje prvek r ∈ Q tak, že r = (xik , vj) ,
i
j
kde x k ∈ X(ui) , vj ∈ V pro uj = u0 a r = (wi , y l) , kde wi ∈ W ,
yjl ∈ Y(uj) pro ui = u0 }
13
Pojem událost
Pod pojmem událost budeme rozumět nejen změnu stavu prvku (hodnoty některé
stavové proměnné prvku), ale také změnu hodnoty vstupní nebo výstupní proměnné prvku v
určitém časovém okamžiku.
Nechť U je univerzum systému a pro každý prvek ui ∈ U je ΩI ( ui ) , resp. ΩS ( ui ),
resp. ΩO ( ui ) vstupní,.resp. stavový, resp. výstupní prostor a nechť Ti ⊆ < 0; ∞) je časová
množina prvku ui . Označíme:
e I ( ui ) ⊆ Ω I ( ui ) × Ti
množinu vstupních událostí prvku ui
e S ( ui ) ⊆ Ω S ( ui ) × Ti
množinu výstupních událostí prvku ui
e O ( ui ) ⊆ Ω O ( ui ) × Ti
množinu stavových událostí prvku ui
Pak lze chování prvku ui které je popsané dvojicí zobrazení:
Ω I ( ui ) × Ω S ( ui ) × Ti
→
Ω O ( ui ) × Ti
Ω I ( ui ) × Ω S ( ui ) × Ti
→
Ω S ( ui ) × Ti
interpretovat následujícím způsobem:
•
vstupní a (nebo) stavová událost prvku ui v čase t1 generuje stavovou událost prvku ui v
čase t2
•
vstupní a (nebo) stavová událost prvku ui v čase t1 generuje výstupní událost prvku ui v
čase t2 .
Přitom platí: t1, t2 ∈ Ti a t2 ≥ t1
.
Pojem interakce mezi prvky systému
Uvědomíme-li si, že existence určitých strukturálních vazeb, které jsou realizovány
ztotožněním vstupních proměnných prvku ui s výstupními proměnnými prvku uj má za
následek ztotožnění vstupních událostí prvku ui s výstupními událostmi prvku uj, pak
chování prvku ui v určitém časovém okamžiku je určeno dvěma následujícími faktory:
•
historií chování prvku, reprezentovanou stavovými proměnnými (hodnotami těchto
stavových proměnných) daného prvku
•
interakcemi s jinými prvky systému, resp. s okolím systému u0 realizovanými skládáním
vstupních událostí daného prvku z výstupních událostí těch prvků systému, se kterými má
tento prvek strukturální vazby.
Dále upřesníme pojem skládání vstupní události prvku ui z výstupních událostí těch
prvků, které jsou zdrojem interakcí určujících chování prvku ui. V zobecněném pohledu
pojem skládání událostí umožní vyjádřit povahu závislosti chování systému na struktuře
systému.
14
Nechť R je relace popisující strukturální vazby mezi prvky systému a nechť pro
ui , uj ∈ U je (ui , uj) ∈ R . Dále nechť Y i ( uj ) = ∅ , resp. Xj ( ui ) = ∅ je podmnožinou
vstupních proměnných prvku ui , resp. výstupních proměnných prvku uj , nad nimiž jsou
realizovány strukturální vazby mezi prvkem ui a uj . Tyto vazby popisuje zobrazení:
ƒij :
Dále uvažujeme:
Xj ( ui ) →
Y i ( uj ) .
Tij ⊆ Ti ∩ Tj ,
kde Ti , resp. Tj je časová množina prvku ui resp. uj a předpokládejme, že Tij ≠ ∅ .
Množina Tij obsahuje časové okamžiky, ve kterých dochází k interakcím mezi prvkem ui a
prvkem uj ztotožněním vstupních proměnných x ∈ Xj ( ui ) prvku ui s výstupními
proměnnými y ∈ Y i ( uj ) . Označme dále:
Ω Ij ( ui ) = { ( xi1, xi2, . . . , xim ); xik ∈ Xj ( ui ), k ∈ < 1; m >}
- stavový prostor vstupních proměnných prvku ui ,
Ω Oi ( uj ) = { ( yj1, yj2, . . . , yjn ); yjk ∈ Yi ( uj ), k ∈ < 1; n >}
- stavový prostor výstupních proměnných prvku uj .
Nad těmito prostory můžeme definovat vstupní a výstupní události tvořící takové složky
vstupních a výstupních událostí prvku ui a uj které jsou určeny propojením ƒij prvku ui a
uj Množinu vstupních událostí prvku ui lze zapsat:
e Ij ( ui ) ⊆ Ω Ij ( ui ) × Tij
a množinu výstupních událostí prvku uj lze zapsat:
e Oi ( uj ) ⊆ Ω Oi ( uj ) × Tij
Pomocí množin událostí eIj ( ui ) a eOi ( uj ) se dá přesně vymezit význam pojmu
interakce mezi dvěma prvky systému následujícím způsobem:
Množiny událostí eIj ( ui ) a eOi ( uj ) jsou tvořeny těmi složkami vstupních událostí
prvku ui a výstupních událostí prvku uj , které jsou ztotožněny zobrazením ƒij . Pro každé
t ∈ Tij , pro něž nastane vstupní událost α ∈ eIj ( ui ) , kde α = (s, t) , existuje výstupní
událost β ∈ eOi ( uj ) , kde β = (s', t) taková, že každá složka xik ∈ Xj ( ui ) vstupního
vektoru s ∈ ΩIj ( ui ) je totožná s odpovídající složkou yjk ∈ Yi ( uj ) výstupního vektoru
s' ∈ ΩOi ( uj ) , pro kterou platí:
yjk. = ƒij ( xik ) .
Uspořádaná trojice prvků ( s , s', t ), kde s ∈ ΩIj ( ui ) , s' ∈ ΩOi ( uj ) , t ∈ Tij se
nazývá interakcí prvku ui s prvkem uj v čase t. Je-li tedy v čase t ∈ Tij vstupním
vektorem prvku ui vektor x = ( x1, x2, . . . , xpi ) a výstupním vektorem prvku uj vektor
y = ( y1, y2, . . . , yqj ) , pak všechny složky xik vektoru x, pro něž platí xik ∈ Xj ( ui ) , mají
stejnou hodnotu jako ty složky yjk ∈ Yi ( uj ) vektoru y , které jsou obrazem proměnných xik v
zobrazení ƒij . Lze tedy říci, že hodnoty všech složek vstupního a výstupního vektoru, které
jsou ztotožněny prostřednictvím zobrazení ƒij , popisují interakci prvku ui s prvkem uj v
čase t .
15
Aplikujme tento postup na všechny prvky ujk univerza systému včetně okolí u0 , se
kterými má prvek ui definované strukturální vazby, tj. pro něž platí:
( ui , ujk ) ∈ R ∪ Q .
Pak vstupní událost prvku ui v čase t je kompozicí interakcí prvků ujk systému S a
okolí u0 v čase t .
Označíme:
e I ( u0 ) ⊆ Ω I ( u0 ) × T
množinu vstupních událostí systému
e O ( u0 ) ⊆ Ω O ( u0 ) × T
množinu výstupních událostí systému ,
kde T je časová množina systému S .
Zobrazení:
ζ:
e I ( u0 ) → e O ( u0 )
popisuje závislost výstupních událostí (reakcí systému) na vstupních událostech (podnětech
okolí).
Na rozdíl od vstupních událostí prvku nelze obecně považovat vstupní události systému
za závislé na výstupních událostech systému, tedy na výstupních událostech jeho jednotlivých
prvků. Vstupní událost systému nelze chápat jako kompozici interakcí systému s okolím, ani
okolí se sebou samým. Tato skutečnost odlišuje okolí od libovolného prvku univerza systému.
To však znamená, že pro okolí nelze definovat chování, tj. závislost reakcí okolí na reakcích
systému.
Tímto způsobem pojatá vlastnost okolí systému by se mohla jevit jako omezující v
případě, kdy okolí systému je v interakci se systémem i ve směru systém - okolí, tj. kdyby
podněty na systém závisely na reakcích systému. Specifikace okolí by pak nutně vyžadovala
kromě vstupních proměnných systému a výstupních proměnných systému rovněž stavové
proměnné systému (paměť okolí) a dále popis závislosti podnětů na reakcích systému. To by
však znamenalo, že okolí má stejné atributy jako libovolný prvek systému. V tomto případě je
výhodnější uvažovat okolí jako prvek univerza systému, tedy u0 ∈ U. Takové systémy se
nazývají systémy uzavřené (vzhledem k okolí). Systémy z předchozího odstavce se nazývají
otevřené, tj. systémy, u nichž u0 ∉ U.
Chování systému
Mějme systém S = (U, R) a jeho okolí u0 , které má se systémem S definované
strukturální vazby prostřednictvím relace Q. Chováním systému se rozumí závislost reakcí
systému S na podněty z okolí u0 přičemž je tato závislost uvažována v čase t .
V souladu s předchozím označme ΩI ( u0 ) prostor podnětů na systém S a ΩO ( u0 )
prostor reakcí systému S. Prvky těchto prostorů jsou podněty na systém a reakce systému,
které jsou reprezentovány vektory hodnot vstupních a výstupních proměnných systému S.
Časová :množina systému je T ⊆ < 0; ∞) . Prvky časové množiny T jsou časové okamžiky, ve
kterých přicházejí z okolí u0 systému S podněty a ve kterých vznikají reakce systému S na
tyto podněty.
16
Chování systému S definuje zobrazení:
ζ:
Ω I ( u0 ) × T → Ω O ( u0 ) × T ,
které lze ekvivalentně zapsat ve tvaru:
ζ:
e I ( u0 ) → e O ( u0 ) .
Chování pak můžeme interpretovat takto:
podnětu s ∈ ΩI ( u0 ) v čase t ∈ T přísluší reakce . s' ∈ ΩO ( u0 ) v čase ť ∈ T, přičemž
předpokládáme, že t ≤ ť, tj. že podnět předchází reakci.
Systémy se stejným chováním
Mějme dán systém S1 = ( U1 , R1 ) s časovou množinou T1 a chováním ζ1 a dále systém
S2 = ( U2 , R2 ) s časovou množinou T2 a chováním ζ2 . Nechť I1 je vstupní abeceda a O1
výstupní abeceda systému S1 , I2 vstupní abeceda a O2 výstupní abeceda systému S2 a dále
nechť existují bijektivní zobrazení:
γ:
σ:
I1 → I2
O1 → O2
Tato zobrazení přiřazují podnětům systému S1 podněty systému S2 a reakcím systému S1
reakce systému S2 následujícím způsobem:
Je-li v = (v1, v2, . . . , vp ) podnětem systému S1 , tj. v ∈ ΩI ( u0 ) / S1 (symbolem / S1
rozumíme prostor příslušející k systému S1), pak v' = (γ(v1), γ(v2), . . . , γ(vp)) je podnětem
systému S2, tj. v' ∈ ΩI ( u0 ) / S2 . Zobrazení γ nazýváme vstupním zobrazením.
Korespondenci vektorů v a v' lze zapsat ve tvaru v' = γ(v).
Analogicky, je-li w = (w1, w2, . . . , wq ) reakcí systému S1 , tj. w ∈ ΩO ( u0 ) / S1 , pak
w' = (σ(w1), σ(w2), . . . , σ(wq )) je reakcí systému S2 , tj. w' ∈ ΩO ( u0 ) / S2. Zobrazení σ
se nazývá výstupní zobrazení. Korespondenci vektorů w a w' můžeme zapsat ve tvaru
w' = σ(w) .
Dále předpokládejme existenci bijektivního zobrazení:
ω:
T1 → T2
s touto vlastností:
pro každé t, ť ∈ T1 , pro které
Zobrazení ω je tedy homomorfismem.
t ≤ ť , platí
ω ( t) ≤ ω ( ť) .
Chování systémů S1 a S2 lze definovat jako zobrazení vstupních událostí systému na
výstupní události příslušných systémů:
ζ1 :
e I ( u0 ) / S1 → e O ( u0 ) / S1
ζ2 :
e I ( u0 ) / S2 → e O ( u0 ) / S2 .
Řekneme, že systémy S1 a S2 mají stejné chování , právě když platí:
ke každé dvojici vstupní a výstupní události (eI , eO) systému S1 , pro niž platí eO = ζ1(eI)
existuje jediná dvojice vstupní a výstupní události (éI , éO) systému S2 , pro niž platí
éO = ζ2(éI).
17
Systémy S1 a S2 mají tedy stejné chování, jsou-li reakce systému S1 na podněty z okolí
stejné jako reakce systému S2. To však platí pouze za předpokladu existence vstupního a
výstupního zobrazení, které převádí vstupní a výstupní vektory systému S1 na vstupní a
výstupní vektory systému S2.
Klasifikace prvků systému
Spojité prvky
Mějme prvek systému ui , jeho časovou množinu Ti a chování prvku popsané dvojicí
zobrazení :
Ω I ( ui ) × Ω S ( ui ) × Ti
→
Ω O ( ui ) × Ti
Ω I ( ui ) × Ω S ( ui ) × Ti
→
Ω S ( ui ) × Ti
Prvek ui je spojitý prvek (prvek se spojitým chováním), jestliže jeho časová množina
Ti = J - R, kde J ⊆ < 0; ∞) je interval, R je konečná nebo spočetná množina reálných čísel a
jestliže dvojici zobrazení lze zapsat ve tvaru:
y(t) =
µ1 ( x( t ), s( t ), t )
s ( t ) = µ2 ( x( t ), s( t ), t )
kde t ∈ Ti a µ1 , µ2 jsou spojité funkce definované na množině Ω I ( ui ) × Ω S ( ui ) × Ti .
Příklady spojitých prvků:
•
Implicitní funkce:
Schematické znázornění spojitého prvku - implicitní
funkce je na uvedeném obrázku.
Vektor vstupních proměnných prvku:
x = ( x1, x2, . . . , xn, xn+1 )
Vektor výstupních proměnných prvku:
y = ( y1 )
Časová množina prvku: T = < a, b >
Chování tohoto prvku je dáno zobrazením f1, které přiřazuje n-tici spojitých funkcí
x1(t), x2(t), . . . , xn(t) spojitou funkci y(t) tak, že pro každé t ∈ < a, b > platí:
y(t) = f1 ( x1(t), x2(t), . . . , xn(t) , y(t) ) .
18
•
Funkční měnič
Schematické znázornění spojitého prvku funkční měnič je na uvedeném obrázku.
Vektor vstupních proměnných prvku:
x = ( x 1 , x 2 , . . . , xn )
Vektor výstupních proměnných prvku:
y = ( y1 )
Časová množina prvku T je interval neobsahující body, ve kterých není funkce F definována.
Funkce F je spojitá. Chování prvku je jednoznačně určeno rovnicí y = F (x).
Diskrétní prvky
Prvek ui nazveme diskrétním prvkem (prvkem s diskrétním chováním), je-li časová
množina Ti prvku ui dána konečným nebo spočetným souborem časových okamžiků a jestliže
pro dvojici zobrazení která popisuje chování prvku ui platí:
y ( t1 ) = µ1 ( x( t ), s( t ), t )
s ( t2 ) = µ2 ( x( t ), s( t ), t )
kde x(t) ∈ Ω I ( ui ) , y(t) ∈ Ω O ( ui ) a s(t) ∈ Ω S ( ui ) je po řadě vstupní, výstupní a stavový
vektor proměnných prvku ui v čase t . Dále pro časové okamžiky t1, t2 ∈ Ti platí : t ≤ t1, t2
a µ1 , µ2 jsou diskrétní funkce definované na množině Ω I ( ui ) × Ω S ( ui ) × Ti .
Příklady diskrétních prvků:
•
Diskrétní integrátor:
Schematické znázornění prvku
diskrétní integrátor je na uvedeném
obrázku.
Vektor vstupních proměnných prvku:
x = ( x1 )
Vektor výstupních proměnných prvku:
y = ( y1 )
Vektor stavových proměnných prvku:
s = ( s1 )
Počáteční podmínka: p = konst. Časovou množinou Ti prvku bude ekvidistantní dělení
intervalu < a, b > s krokem h. Chování tohoto prvku při použití Eulerovy formule pro
aproximaci výstupu lze popsat dvojicí zobrazení:
y ( t1 ) = µ1 ( x( t ), s( t ) ) , s ( t1 ) = µ2 ( x( t ), s( t ) ) ,
kde zobrazení µ1 = µ2 = s1(t) + h∗x1(t), přičemž s1(a) = p. Stavová proměnná s, slouží k
uchování výstupu z předchozího kroku. Dále pro časové okamžiky t, t1 ∈ T platí: t1 = t + h .
19
•
Logický prvek NAND
Schematické znázornění diskrétního prvku - NAND je na uvedeném obrázku.
Vektor vstupních proměnných prvku:
x = ∼ ( x 1, x 2 )
Vektor výstupních proměnných prvku:
y = ( y1 )
Vstupní a výstupní abecedou tohoto prvku je binární
abeceda {0, 1} . Časová množina prvku Ti je tvořena
diskrétními časovými okamžiky. Tento prvek nemá stavové
proměnné.
Chování tohoto prvku je reprezentováno
zobrazením zi, které je redukováno pouze na
zobrazení µ1 :
y ( ti ) = µ1 ( x(ti ), ti )
kde x je vektor vstupních proměnných prvku, y
je vektor výstupních proměnných prvku a µ1 je
zobrazení dané uvedenou tabulkou.
Deterministické a nedeterministické prvky
Mějme prvek ui, vektor jeho vstupních proměnných x(t) ∈ ΩI ( ui ) , vektor výstupních
proměnných y(t) ∈ ΩO ( ui ), vektor stavových proměnných s(t) ∈ ΩS ( ui ) a časové
okamžiky t1, t2 ∈ Ti , přičemž platí : t1 ≤ t2 . Chování prvku ui lze zapsat ve tvaru:
y ( t2 ) = µ1 ( x(t1 ), s(t1 ), t1 )
s ( t2 ) = µ2 ( x(t1 ), s(t1 ), t1 )
Jestliže chování prvku ui je určeno jednoznačnými zobrazeními µ1 a µ2, pak prvek ui
nazveme deterministickým prvkem (prvkem s deterministickým chováním). Jestliže chování
prvku ui je určeno obecně víceznačným zobrazením µ1, nebo µ2, pak se prvek ui nazývá
nedeterministickým prvkem (prvkem s nedeterministickým chováním). To znamená, že
obrazem některého bodu (x, s, t1) definičního oboru zobrazení µ1, nebo µ2 není jediný bod
(y, t2) v zobrazení µ1 a jediný bod (s, t2) v zobrazení µ2, ale množina všech možných bodů
(y, t2) v zobrazení µ1 a množina všech možných bodů (s, t2) v zobrazení µ2.
20
Stochastické prvky
Prvek ui nazveme stochastickým prvkem (prvkem se stochastickým chováním), jestliže
lze jeho chování popsat stochastickými závislostmi. Vstupní prostor , výstupní prostor a
stavový prostor stochastického prvku ui jsou dány náhodnými vektory, neboli tzv.
vícerozměrnými náhodnými veličinami. Zobrazení µ1 a µ2 , která popisují chování prvku ui
se nazývají náhodné funkce nebo také stochastické procesy. Podle tvaru časové množiny se
rozlišují diskrétní nebo spojité stochastické prvky. Jestliže časová množina je tvořena
konečným nebo spočetným souborem časových okamžiků, mluvíme o diskrétních
stochastických prvcích. Je-li časová množina tvořena intervalem, mluvíme o spojitých
stochastických prvcích. Přechod z jednoho stavu prvku do druhého, případně výstup
příslušející k danému stavu, je ohodnocen určitou pravděpodobností. Stochastické prvky jsou
zvláštním případem prvků nedeterministických.
Klasifikace systémů
Spojité systémy
Systém se nazývá spojitým systémem (systémem se spojitým chováním), jestliže
všechny jeho prvky jsou spojité (mají spojité chování). U těchto systémů budou atributy
vyjádřeny pomocí vektorů hodnot (vstupních, výstupních nebo stavových), přičemž zde může
existovat i jejich nespojitost, která je podmíněna událostmi spojitými i nespojitými (dopředu
známými i neznámými). Z matematického hlediska jsou spojité systémy popsané v kombinaci
s diferenciálními rovnicemi obyčejnými i parciálními, diferenčními rovnicemi, algebraickými
rovnicemi, apod. Jako příklady lze uvést mechanické systémy, elektronické systémy, ale také
třeba krevní oběh člověka.
Logické systémy
Logické systémy mohou být spojité, diskrétní nebo kombinované. Charakteristickým
znakem těchto systémů je konečný počet složek vektorů hodnot v ustáleném stavu (obvykle
dvě). Tyto systémy realizují funkce matematické logiky, respektive zpracovávají informace v
číslicové formě. Příkladem těchto systémů jsou různé kombinační nebo sekvenční automatiky
a číslicové počítače. Z hlediska modelování rozlišujeme u logických systémů čtyři úrovně:
1) fyzikální úroveň. Předmětem zkoumání v této úrovni je systém, v němž uvažujeme
základní prvky, například rezistory a tranzistory. Vlastnosti těchto prvků jsou dány
fyzikálními veličinami, které charakterizují jejich funkci. Veličiny mají fyzikální rozměry.
Systémy v této úrovni jsou popsány například diferenciálními rovnicemi a spadají tedy do
problematiky spojitých systémů.
2) úroveň logických členů. Zkoumání systémů v této úrovni vychází již z určitých abstrakcí.
Vektory hodnot mají již pouze logickou hodnotu a elementárními prvky jsou zde
jednotlivé členy realizující základní logické funkce, například logický součin a součet.
Změny vektorů hodnot se předpokládají obvykle skokové a dynamika se postihuje
časovým zpožděním výstupů logických členil v závislosti na vstupech.
21
3) Úroveň meziregistrových přenosů Tato úroveň předpokládá složitější celky, které jsou v
podstatě sestavené z logických členů, například paměť, dekodér a registr. Je zde možné
vyčlenit skupinu řídicích vektorů hodnot a jinou skupinu vektorů hodnot, kterou tvoří
zobrazené informace.
4) Úroveň systémová. Tato úroveň se nejčastěji rozlišuje v souvislosti s výpočetními
systémy. Na zařízení nebo na jeho část je možné se dívat jako na obslužný systém, který
splňuje požadavky ve smyslu zpracování informací. Tato problematika spadá do oblasti
systémů nespojitých (diskrétních).
Diskrétní systémy
O těchto systémech se hovoří také jako o systémech nespojitých nebo o systémech
hromadné obsluhy. Systémy tohoto druhu obsahují v nejjednodušším případě zařízení - uzel
obsluhy, který zpracovává jednotlivé položky - transakce. Transakce vznikají ve zvláštních
prvcích, kterým říkáme zdroje požadavků - generátory transakcí. Jestliže vznikne požadavek
na další zpracování ve formě příchodu další transakce a uzel obsluhy je obsazený, transakce
musí čekat na zpracování v dalším prvku systému, který se nazývá fronta. Kromě uvedených
základních prvků systémů zde mohou existovat ještě další prvky, které mohou navzájem
vytvářet značně složité systémy. Příklady takových systémů jsou řídící číslicový počítač
napojený na technologický proces, pokladna kina nebo dílna výrobního závodu.
Systém S se nazývá diskrétním systémem (systémem s diskrétním chováním), jestliže
všechny jeho prvky jsou diskrétní (mají diskrétní chování).
Kombinované systémy
Diskrétní a spojité systémy představují disjunktní třídy obecných systémů. V praxi se
často vyskytují systémy, které jsou složeny současně z prvků diskrétních i spojitých. Systémy
tohoto druhu se nazývají systémy kombinované (systémy s kombinovaným chováním).
Deterministické, nedeterministické a stochastické systémy
Systém S nazveme.deterministickým systémem (systémem s deterministickým
chováním), jestliže všechny jeho prvky jsou deterministické (mají deterministické chování).
Systém, který obsahuje jeden nebo více nedeterministických prvků (prvků s
nedeterministickým chováním), nazveme nedeterministickým systémem (systémem s
nedeterministickým chováním). Systém, jehož všechny nedeterministické prvky jsou
stochastické (mají stochastické chování), nazveme stochastickým systémem (systémem se
stochastickým chováním). Systémy s diskrétním i spojitým chováním mohou být současně
deterministické, nedeterministické nebo stochastické.
22
Základy MATLABu
Formát čísel:
Matlab má několik možných formátů zobrazování čísel. Pro všechny formáty napíšeme
HELP FORMAT.
Zde jsou nejpoužívanější:
FORMAT
základní nastavení, stejné jako short
FORMAT SHORT
číslo s pěti místy za desetinnou čárkou
FORMAT LONG
číslo s patnácti místy za desetinnou čárkou
FORMAT SHORT E
číslo s pohyblivou des. čárkou a exponentem, 5 míst za des. čárkou
FORMAT LONG E
číslo s pohyblivou des. čárkou a exponentem, 15 místy za des. čárkou
Pro případ, že se nám příkaz, který chceme zadat, nevejde na řádek, můžeme ho zapsat na dva řádky, přičemž
za část příkazu na prvním řádku napíšeme tři tečky, stiskneme ENTER a na další řádek dopíšeme zbytek
příkazu.
Př:
x = [1 5 6 7 1 3 …
5 1 6]
Dvojtečka:
Vytvoření dlouhých polí lze usnadnit použitím dvojtečky ":". Standardní přírůstek je 1. Pokud chceme jiný
přírůstek napíšeme X = 0.1: 0.15: 1.5, což znamená od 0.1 do 1.5 s přírůstkem 0.15
Př.:
Chceme vytvořit posloupnost čísel, která bude vypadat stejně jako na obrázku, a to ve vzdálenosti 1.
X (1:1:5) = 0;
X (6:1:15) = 1;
X (16:1:25) = 2;
Z = (0.1:0.1:2);
pro klesání si vytvoříme rostoucí posloupnost čísel
X (26:1:45) = (2 – Z);
posloupnost odečteme od maxima.
STEM (X)
Pro vykreslení posloupnosti X použijeme příkaz STEM
Výsledek:
Středník:
Středník ";" použitý za příkazem způsobí, že se potlačí výpis hodnot.
Čárka:
Na jeden řádek můžeme umístit více příkazů. Musí být však odděleny čárkou, popřípadě středníkem. Středník
nám potlačí výpis, zatímco čárka ne.
Proměnné a matice:
Každá proměnná v Matlabu je brána jako matice, přestože má rozměr 1x1. Dimenzování ani deklarování typu
se v Matlabu nepoužívá, protože Matlab to dělá automaticky. Index v Matlabu u matic začíná vždy od
jedničky, ne od nuly. Jednotlivé prvky se zapisují řádkovým a sloupcovým indexem. Např. A(1,2) je prvek na
prvním řádku a ve druhém sloupci.
Dvojtečka je také používána pro označení celého rozsahu hodnot.
Proto když napíšeme A(2,:) Matlab vypíše celý druhý řádek.
Komplexní čísla:
Proměnné v Matlabu nemusí být pouze reálné, ale mohou být také komplexní. Pro imaginární část se používají
symboly i a j. Zadávají se pak ve formátu např.: c = 2 + 6i. Vypsání jednotlivých částí takovéhoto čísla se
provádí: C_re = real(c), C_im = imag(c)
Pro absolutní hodnotu a úhel použijeme příkazy: C_abs = abs(c), C_uhel_rad = angle(c)
Pozn.: Úhel je udáván v radiánech. Převod na stupně umožní výpočet C_uhel_deg = C_uhel_rad*180/pi.
Zaokrouhlování čísel:
Příkaz ROUND (X) zaokrouhlí X směrem k nejbližšímu celému číslu (klasické zaokrouhlování).
Příkaz FIX (X) odřízne desetinnou část.
Příkaz FLOOR (X) „zaokrouhlí“ X směrem k nižšímu celému číslu
Příkaz CEIL (X) „zaokrouhlí“ X směrem k vyššímu celému číslu
Zjištění Minima a Maxima sloupce:
Příkazy MIN (X), MAX(X) vrací hodnotu minima resp. maxima z každého sloupce matice X
Základní příkazy MATLABu
close name
close all
- uzavře námi požadovanou aktivní „figuru“ - graf
- uzavře všechna okna kromě „MATLAB Editor/Dubugger“
dir
- vypíše obsah aktuálního adresáře – obdobně jako DOS
path
- vypíše všechny přístupné adresáře
what
- vypíše jednotlivé soubory Matlabu podle typu (resp. přípony) z aktuálního adresáře
M-files in the current directory D:\Projekt
MAT-files in the current directory D:\Projekt
MDL-files in the current directory D:\Projekt
type
- vypíše obsah souboru s příponou M, bez otevření MATLAB Editor /Debugger
who
whos
- vypíše na obrazovky veškeré proměnné, které jsou momentálně zadány do Matlabu
- stejný výpis jako who, jen s tím rozdílem, že Matlab vypíše nejen názvy proměnných, ale
také jejich velikost (Size), počet bytů alokovaných pro dané pole dané proměnné (Bytes) a jejich
typ (Class)
- otevře Workspace Browser, který podává stejné informace jako whos. Rozdíl je v tom, že
umožňuje jednotlivé proměnné jednoduše vymazat, nebo si tyto proměnné otevřít
v MATLAB Editor/Debuggeru, který zobrazí jejich hodnoty a kde můžeme tyto hodnoty
velmi jednoduše přepisovat a měnit samotnou velikost proměnné (prodloužit, zkrátit, přidat
sloupce,…). Pokud v Workspace Browseru dvakrát klikneme pomalu na nějakou proměnnou,
můžeme změnit také její název.
workspace
edit
- tento příkaz nám otevře MATLAB Editor /Debugger
edit name
- nám otevře MATLAB Editor /Debugger se zadaným souborem
Pokud chceme smazat nějakou proměnou nebo pokud chceme smazat všechny proměnné, použijeme
příkaz CLEAR
clear name - kde name představuje název proměnné
clear all
- smaže všechny proměnné
clc
- vymaže obrazovku v Matlabu (Clear Command Window)
clf
- pokud máme otevřený nějaký graf a chceme ho vymazat, použijeme příkazu clf (Clear current
figure window) vymaže aktuální „figuru“
echo on/off
Pokud nechceme vypisovat při spouštění M-souboru, co který řádek provádí, napíšeme na
konec středník. Pokud později chceme vypisovat veškeré řádky včetně jejich příkazů, použijeme
příkaz echo on. Tento příkaz začne vypisovat nejen řádky se středníkem na konci, ale také
informační řádky (před ty se na začátek řádku dává znak %). Pro vypnutí tohoto zobrazování
máme funkci echo off.
size
- tento příkaz nám slouží ke zjištění velikosti, kde první číslo z výsledku znamená počet řádků a
druhé číslo počet sloupců.
length
- příkaz LENGTH nám vrací délku proměnné a to délku která je „větší“, což znamená, že pokud
máme matici M x N, kde M > N, tak nám vrací hodnotu M. Jinak se dá říci, že příkaz LENGTH
nám vrací „větší“ hodnotu z příkazu SIZE.
input
- při programování v M-souborech se používá INPUT pro načtení proměnné z klávesnice.
- použití: A = input (‘zde napis hodnotu promenne A: ’)
disp
- při programování v M-souborech se tento příkaz používá, pokud chceme vypsat nějakou hlášku
uživateli na obrazovku.
- použití: disp(‘Toto je text, ktery vam chci sdelit.’)
pause (n)
- příkaz pro pozdržení dalších výpočtů, kde n představuje čas v sekundách, na který se výpočet
zastaví. Pokud napíšeme PAUSE – bez udání času, Matlab bude čekat na stisk libovolné
klávesy.
Zadání aktuálních cest
Pro práci se soubory je nutno se naučit používat nastavování cest. K tomu nám slouží buďto zadání cesty stejně
jako v DOSu (příkaz CD), nebo můžeme použít v menu Matlabu „File“ - „Set Path…“, kde se můžeme
podívat jak na aktuální adresář, tak na všechny adresáře, do kterých máme přímý přístup. Do tohoto seznamu si
můžeme přidat také svoje cesty (ikona Add to path). Current Directory nám ukazuje aktuální adresář, jenž
můžeme změnit pomocí ikony Browse… Pro vypsání aktuální cesty přímo z Matlabu použijeme funkci PWD.
Uložení souboru
Pro uložení souboru nám slouží funkce save ve tvarech:
1) save
2) save filename
3) save filename variables
4) save filename options
5) save filename variables options
1) Při použití tohoto výrazu nám Matlab uloží veškeré proměnné, které jsme použili od chvíle, kdy jsme
naposled použili příkaz CLEAR ALL do souboru „matlab.mat“ v aktuálním adresáři.
2) dtto bod 1) jen s tím rozdílem, že proměnné uloží do námi zvoleného souboru v aktuálním adresáři.
3) Uloží do námi zvoleného souboru v aktuálním adresáři zvolené proměnné (ty musí být ovšem definovány)
4) dtto bod 2) pouze můžeme zvolit, v jakém tvaru se bude soubor ukládat
5) dtto bod 3) pouze můžeme zvolit, v jakém tvaru se bude soubor ukládat
v bodě 1) až 3) se bude soubor ukládat ve tvaru –mat
options:
Př:
-ascii
-ascii –double
-ascii –tabs
-ascii -double –tabs
-V4
-append
uloží v 8-číselném ASCII formátu
uloží v 16-číselném ASCII formátu
uloží v 8-číselném ASCII formátu, tabelátorem oddělené
uloží v 16-číselném ASCII formátu, tabelátorem oddělené
uloží ve formátu Matlabu verze 4.0
uloží na konec souboru (pouze pro soubory typu –mat)
c = [0 0 0 0 1 5 6 7 4 1 6 5 4 6 9 7 1 3 2 5 4 6 8 4 4 6 5 6 7 5 6 9 1 3 5];
d = [0; 0; 0; 0; 1; 5; 6; 7; 4; 1; 6; 5; 4; 6; 9; 7; 1; 3; 2; 5; 4; 6; 8; 4; 4; 6; 5; 6; 7; 5; 6; 9; 1; 3; 5];
e = [0 0; 0 0; 1 5; 6 7; 4 1; 6 4; 6 9; 5 7; 1 3; 2 5; 4 6];
save promenne.mat c d
save promenne.mat e –append
nebo
save promenne.txt c d e –ascii –tabs
… pozor - takto uložený soubor nepůjde již v Matlabu otevřít
save promenne.txt c d e –ascii –tabs –double
… pozor - takto uložený soubor nepůjde již v Matlabu otevřít
nebo
Otevření souboru
Pro otevření souboru nám slouží funkce load ve tvarech:
1) load
2) load filename
3) load ('filename')
4) load filename -ascii
5) load filename –mat
1) Při použití tohoto výrazu Matlab otevře soubor „matlab.mat“ v aktuálním adresáři, pokud existuje.
2) Matlab nám otevře zadaný soubor za předpokladu, že byl vytvořen a uložen z Matlabu, s příponou *.mat
3) Řeší nám tentýž problém, pouze se zde dá zadat kompletní cesta k souboru, opět se musí jednat o soubor
vytvořený v Matlabu, s příponou *.mat
4) Otevře soubor typu ascii. Pokud již máme zadán soubor pouze s vytvořenými čísly, musíme tento soubor
otevřít ve tvaru ASCII. To znamená, že tento soubor nebude vytvářen v Matlabu. Název proměnné, do které se
nám soubor otevře, je shodný s názvem souboru.
5) Otevře soubor typu .mat, což označuje soubory vytvořené a uložené v Matlabu.
Př:
nebo
load promene –mat
load (’d:\Work\Matlab\promene.mat’)
Operace s maticemi
Některé důležité matice v MATLABu:
Z = zeros (5,3)
je matice 5x3, kde všechny prvky jsou rovny nule
O = ones (3,3)
je matice 3x3, kde všechny prvky jsou rovny jedné
E = eye (3)
je jednotková matice 3x3.
Operace s maticemi jsou v Matlabu dobře propracovány, ale při jejich používání může vzniknout řada chyb, a
proto je třeba při jejich používání dávat velký pozor!
Pro lepší pochopení si vysvětlíme jejich použití na dvou maticích A a B.
A = [1 2; 5 6]
B = [3 4; 2 1]
Transpozice matice:
Pro transpozici se používá znak apostrofu (').
Pozn.: U matic s komplexními čísly použití symbolu ' vytvoří matici transponovanou s prvky komplexně
sdruženými.
Př.: C = [2+i -1+5i; 6 4+3i]
D = C’
povšimněte si znamének u imaginární části
Pokud bychom chtěli provést pouze transpozici bez sdružení, musíme použít symbol .' (tečka apostrof)
Sčítání a odčítání:
Tyto operace jsou vykonávány běžným způsobem, tzn. prvek po prvku. Př: A + B
Pokud chceme ke každému prvku matice přičíst (resp. odečíst) stejné číslo, můžeme tuto operaci zapsat takto:
A+6
Podmínkou sčítání a odčítání matic je, že matice musí mít stejný rozměr, jinak Matlab hlásí chybu.
Násobení:
Operace A .* B (tečka hvězdička) představuje násobení příslušných prvků matic. Matice A, B musí mít stejný
rozměr, nebo jedna z nich musí být skalár.
Skutečný maticový součin se zapíše jako A * B, musí ovšem platit, že počet sloupců matice A musí souhlasit
s počtem řádků matice B.
Dělení:
Dělení jednotlivých prvků matic se označuje A ./ B (tečka lomítko)
Operace A / B není již tak úplně zřejmá na pochopení. Navíc existuje tzv. levé dělení ( \ ) a pravé dělení ( /).
Levé dělení A \ B. Jestliže A je čtvercová matice, je A \ B ve výsledku totéž jako inv(A) * B.
Pravé dělení A / B = B * inv(A)
Exponenciální operace:
Opět existuje prvková ( .^ ) a maticová ( ^ ). Dále máme možnost použít funkce SQRT a EXP, které pracují
běžným způsobem s prvky matic.
Simulink
To start Simulink, you must first start MATLAB. Consult your MATLAB
documentation for more information. You can then start Simulink in two ways:
• Click on the Simulink icon
on the MATLAB toolbar.
• Enter the simulink command at the MATLAB prompt.
On Microsoft Windows platforms, starting Simulink displays the Simulink
Library Browser.
The Library Browser displays a tree-structured view of the Simulink block
libraries installed on your system. You can build models by copying blocks from
the Library Browser into a model window (this procedure is described later in
this chapter).
On UNIX platforms, starting Simulink displays the Simulink block library
window.
The Simulink library window displays icons representing the block libraries
that come with Simulink. You can create models by copying blocks from the
library into a model window.
On Windows, you can display the Simulink library window by
right-clicking the Simulink node in the Library Browser window.
Creating a New Model
To create a new model, click the New button on the Library Browser’s toolbar
(Windows only) or choose New from the library window’s File menu and select
Model. You can move the window as you do other windows.
Editing an Existing Model
To edit an existing model diagram, either:
• Click the Open button on the Library Browser’s toolbar (Windows only) or
select Open from the Simulink library window’s File menu and then choose
or enter the model filename for the model to edit.
• Enter the name of the model (without the .mdl extension) in the MATLAB
command window. The model must be in the current directory or on the path.
Entering Simulink Commands
You run Simulink and work with your model by entering commands. You can
enter commands by:
• Selecting items from the Simulink menu bar
• Selecting items from a context-sensitive Simulink menu (Windows only)
• Clicking buttons on the Simulink toolbar (Windows only)
• Entering commands in the MATLAB command window
Using the Simulink Menu Bar to Enter Commands
The Simulink menu bar appears near the top of each model window. The menu
commands apply to the contents of that window.
Using Context-Sensitive Menus to Enter Commands
Simulink displays a context-sensitive menu when you click the right mouse
button over a model or block library window. The contents of the menu depend
on whether a block is selected. If a block is selected, the menu displays
commands that apply only to the selected block. If no block is selected, the
menu displays commands that apply to a model or library as a whole.
Using the Simulink Toolbar to Enter Commands
Model windows in the Windows version of Simulink optionally display a
toolbar beneath the Simulink menu bar. To display the toolbar, check the
Toolbar option on the Simulink View menu.
Toolbar
The toolbar contains buttons corresponding to frequently used Simulink
commands, such as those for opening, running, and closing models. You can
run such commands by clicking on the corresponding button. For example, to
open a Simulink model, click on the button containing the open folder icon. You
can determine which command a button executes by moving the mouse pointer
over the button. A small window appears containing text that describes the
button. The window is called a tooltip. Each button on the toolbar displays a
tooltip when the mouse pointer hovers over it. You can hide the toolbar by
unchecking the Toolbar option on the Simulink View menu.
Using the MATLAB Window to Enter Commands
When you run a simulation and analyze its results, you can enter MATLAB
commands in the MATLAB command window.
Undoing a Command
You can cancel the effects of up to 101 consecutive operations by choosing Undo
from the Edit menu. You can undo these operations:
• Adding, deleting, or moving a block
• Adding, deleting, or moving a line
• Adding, deleting, or moving a model annotation
• Editing a block name
• Creating a subsystem
You can reverse the effects of an Undo command by choosing Redo from the
Edit menu.
Simulink Windows
Simulink uses separate windows to display a block library browser, a block
library, a model, and graphical (scope) simulation output. These windows are
not MATLAB figure windows and cannot be manipulated using Handle
Graphics® commands.
Simulink windows are sized to accommodate the most common screen
resolutions available. If you have a monitor with exceptionally high or low
resolution, you may find the window sizes too small or too large. If this is the
case, resize the window and save the model to preserve the new window
dimensions.
Status Bar
The Windows version of Simulink displays a status bar at the bottom of each
model and library window.
Status Bar
When a simulation is running, the status bar displays the status of the
simulation, including the current simulation time and the name of the current
solver. You can display or hide the status bar by checking or unchecking the
Status Bar option on the Simulink View menu.
Zooming Block Diagrams
Simulink allows you to enlarge or shrink the view of the block diagram in the
current Simulink window. To zoom a view:
• Select Zoom In from the View menu (or type r) to enlarge the view.
• Select Zoom Out from the View menu (or type v) to shrink the view.
• Select Fit System to View from the View menu (or press the space bar) to
fit the diagram to the view.
• Select Normal from the View menu to view the diagram at actual size.
By default, Simulink fits a block diagram to view when you open the diagram
either in the model browser’s content pane or in a separate window. If you
change a diagram’s zoom setting, Simulink saves the setting when you close
the diagram and restores the setting the next time you open the diagram.
Selecting Objects
Many model building actions, such as copying a block or deleting a line, require
that you first select one or more blocks and lines (objects).
Selecting One Object
To select an object, click on it. Small black square “handles” appear at the
corners of a selected block and near the end points of a selected line. For
example, the figure below shows a selected Sine Wave block and a selected line.
When you select an object by clicking on it, any other selected objects become
deselected.
Selecting More than One Object
You can select more than one object either by selecting objects one at a time, by
selecting objects located near each other using a bounding box, or by selecting
the entire model.
Selecting Multiple Objects One at a Time
To select more than one object by selecting each object individually, hold down
the Shift key and click on each object to be selected. To deselect a selected
object, click on the object again while holding down the Shift key.
Selecting Multiple Objects Using a Bounding Box
An easy way to select more than one object in the same area of the window is
to draw a bounding box around the objects:
1 Define the starting corner of a bounding box by positioning the pointer at
one corner of the box, then pressing and holding down the mouse button.
Notice the shape of the cursor.
2 Drag the pointer to the opposite corner of the box. A dotted rectangle
encloses the selected blocks and lines.
3 Release the mouse button. All blocks and lines at least partially enclosed by
the bounding box are selected.
Selecting the Entire Model
To select all objects in the active window, choose Select All from the Edit
menu. You cannot create a subsystem by selecting blocks and lines in this way.
Blocks
Blocks are the elements from which Simulink models are built. You can model
virtually any dynamic system by creating and interconnecting blocks in
appropriate ways. This section discusses how to use blocks to build models of
dynamic systems.
Block Data Tips
On Microsoft Windows, Simulink displays information about a block in a
pop-up window when you allow the pointer to hover over the block in the
diagram view. To disable this feature or control what information a data tip
includes, select Block data tips options from the Simulink View menu.
Virtual Blocks
When creating models, you need to be aware that Simulink blocks fall into two
basic categories: nonvirtual and virtual blocks. Nonvirtual blocks play an
active role in the simulation of a system. If you add or remove a nonvirtual
block, you change the model’s behavior. Virtual blocks, by contrast, play no
active role in the simulation; they help organize a model graphically. Some
Simulink blocks are virtual in some circumstances and nonvirtual in others.
Such blocks are called conditionally virtual blocks. The following table lists
Simulink virtual and conditionally virtual blocks.
Table : Virtual and Conditionally Virtual Blocks
Block Name
Condition Under Which Block Will Be Virtual
Bus Selector
Always virtual.
Data Store Memory
Always virtual.
Demux
Always virtual.
Enable Port
Always virtual.
From
Always virtual.
Goto
Always virtual.
Goto Tag Visibility
Always virtual.
Table : Virtual and Conditionally Virtual Blocks (Continued)
Block Name
Condition Under Which Block Will Be Virtual
Ground
Always virtual.
Inport
Virtual unless the block resides in a conditionally
executed subsystem and has a direct connection to
an outport block.
Mux
Always virtual.
Outport
Virtual when the block resides within any
subsystem block (conditional or not), and does not
reside in the root (top-level) Simulink window.
Selector
Virtual except in matrix mode.
Subsystem
Virtual except if the block is conditionally executed
and/or the block’s Treat as Atomic Unit option is
selected.
Terminator
Always virtual.
Trigger Port
Virtual when the outport port is not present.
Copying and Moving Blocks from One Window to
Another
As you build your model, you often copy blocks from Simulink block libraries or
other libraries or models into your model window. To do this, follow these steps:
1 Open the appropriate block library or model window.
2 Drag the block to copy into the target model window. To drag a block,
position the cursor over the block icon, then press and hold down the mouse
button. Move the cursor into the target window, then release the mouse
button.
You can also drag blocks from the Simulink Library Browser into a model
window.
Simulink hides the names of Sum, Mux, Demux, Bus Creator, and Bus
Selector blocks when you copy them from the Simulink block library to a
model. This is done to avoid unnecessarily cluttering the model diagram. (The
shapes of these blocks clearly indicate their respective functions.)
You can also copy blocks by using the Copy and Paste commands from the Edit
menu:
1 Select the block you want to copy.
2 Choose Copy from the Edit menu.
3 Make the target model window the active window.
4 Choose Paste from the Edit menu.
Simulink assigns a name to each copied block. If it is the first block of its type
in the model, its name is the same as its name in the source window. For
example, if you copy the Gain block from the Math library into your model
window, the name of the new block is Gain. If your model already contains a
block named Gain, Simulink adds a sequence number to the block name (for
example, Gain1, Gain2). You can rename blocks
When you copy a block, the new block inherits all the original block’s parameter
values.
Simulink uses an invisible five-pixel grid to simplify the alignment of blocks.
All blocks within a model snap to a line on the grid. You can move a block
slightly up, down, left, or right by selecting the block and pressing the arrow
keys.
You can display the grid in the model window by typing the following command
in the MATLAB window.
set_param('<model name>','showgrid','on')
To change the grid spacing, type
set_param('<model name>','gridspacing',<number of pixels>)
For example, to change the grid spacing to 20 pixels, type
set_param('<model name>','gridspacing',20)
For either of the above commands, you can also select the model, and then type
gcs instead of <model name>.
You can copy or move blocks to compatible applications (such as word
processing programs) using the Copy, Cut, and Paste commands. These
commands copy only the graphic representation of the blocks, not their
parameters.
Moving blocks from one window to another is similar to copying blocks, except
that you hold down the Shift key while you select the blocks.
You can use the Undo command from the Edit menu to remove an added block.
Moving Blocks in a Model
To move a single block from one place to another in a model window, drag the
block to a new location. Simulink automatically repositions lines connected to
the moved block.
To move more than one block, including connecting lines:
1 Select the blocks and lines. If you need information about how to select more
than one block.
2 Drag the objects to their new location and release the mouse button.
Copying Blocks in a Model
You can copy blocks in a model as follows. While holding down the Ctrl key,
select the block with the left mouse button, then drag it to a new location. You
can also do this by dragging the block using the right mouse button. Duplicated
blocks have the same parameter values as the original blocks. Sequence
numbers are added to the new block names.
Block Parameters
All Simulink blocks have a common set of parameters, called block properties,
that you can set.
properties. In addition, many blocks have one or more block-specific
parameters that you can set . By
setting these parameters, you can customize the behavior of the block to meet
the specific requirements of your model.
Setting Block-Specific Parameters
Every block that has block-specific parameters has a dialog box that you can
use to view and set the parameters. You can display this dialog by selecting the
block in the model window and choosing BLOCK Parameters from the model
window’s Edit menu or from the model window’s context (right-click) menu,
where BLOCK is the name of the block you selected, e.g., Constant
Parameters. You can also display a block’s parameter dialog box by
double-clicking its icon in the model or library window.
This holds true for all blocks with parameter dialog boxes except for the
Subsystem block. You must use the model window’s Edit menu or context
menu to display a Subsystem block’s parameter dialog.
For information on the parameter dialog of a specific block
You can set any block parameter, using the Simulink set_param command.
You can use any MATLAB constant, variable, or expression that evaluates to
an acceptable result when specifying the value of a parameter in a block
parameter dialog or a set_param command. You can also use variables or
expressions that evaluate to Simulink data objects as parameters
Block Properties Dialog Box
This dialog box lets you set a block’s properties. To display this dialog, select
the block in the model window and then select BLOCK Properties from the
Edit menu, where BLOCK is the name of the block you selected, e.g.,
Constant.
The dialog box contains the following fields.
Description
Brief description of the block’s purpose.
Priority
Execution priority of this block relative to other blocks in the model.
Tag
A general text field that is saved with the block.
Open function
MATLAB (M-) function to be called when a user opens this block.
Attributes format string
Current value of the block’s AttributesFormatString parameter. This
parameter specifies which parameters to display beneath a block’s icon.
Appendix describes the parameters that a block can have. You can use the
AttributesFormatString parameter to display the values of specified
parameters beneath the block’s icon.
The attributes format string can be any text string that has embedded
parameter names. An embedded parameter name is a parameter name
preceded by %< and followed by >, for example, %<priority>. Simulink displays
the attributes format string beneath the block’s icon, replacing each parameter
name with the corresponding parameter value. You can use line-feed
characters (\n) to display each parameter on a separate line. For example,
specifying the attributes format string
pri=%<priority>\ngain=%<Gain>
for a Gain block displays
If a parameter’s value is not a string or an integer, Simulink displays N/S (not
supported) for the parameter’s value. If the parameter name is invalid,
Simulink displays “???” as the parameter value.
Deleting Blocks
To delete one or more blocks, select the blocks to be deleted and press the
Delete or Backspace key. You can also choose Clear or Cut from the Edit
menu. The Cut command writes the blocks into the clipboard, which enables
you to paste them into a model. Using the Delete or Backspace key or the
Clear command does not enable you to paste the block later.
You can use the Undo command from the Edit menu to replace a deleted block.
Displaying Block Execution Order
To display the execution order of blocks during simulation, select Execution
order from the Simulink Format menu. Selecting this option causes Simulink
to display a number in the top right corner of each block in a block diagram.
The number indicates the execution order of the block relative to other blocks
in the diagram. For example, 1 indicates that the block is the first block
executed on every time step, 2 indicates that the block is the second block
executed on every time step, and so on.
Using Drop Shadows
You can add a drop shadow to a block by selecting the block, then choosing
Show Drop Shadow from the Format menu. When you select a block with a
drop shadow, the menu item changes to Hide Drop Shadow. The figure below
shows a Subsystem block with a drop shadow.
Specifying Block Diagram Colors
Simulink allows you to specify the foreground and background colors of any
block or annotation in a diagram, as well as the diagram’s background color. To
set the background color of a block diagram, select Screen color from the
Simulink Format menu. To set the background color of a block or annotation
or group of such items, first select the item or items. Then select Background
color from the Simulink Format menu. To set the foreground color of a block
or annotation, first select the item. Then select Foreground color from the
Simulink Format menu.
Specifying Colors Programmatically
You can use the set_param command at the MATLAB command line or in an
M-file program to set parameters that determine the background color of a
diagram and the background color and foreground color of diagram elements.
The following table summarizes the parameters that control block diagram
colors.
Parameter
Determines
ScreenColor
Background color of block diagram
BackgroundColor
Background color of blocks and annotations
ForegroundColor
Foreground color of blocks and annotations
You may set these parameters to any of the following values: 'black', 'white',
'red', 'green', 'blue', 'cyan', 'magenta', 'yellow', 'gray', 'lightBlue',
'orange', 'darkGreen'.
Sample Time Colors
Simulink can color-code the blocks and lines in your model to indicate the
sample rates at which the blocks operate.
Table : Sample Time Colors
Color
Use
Black
Continuous blocks
Magenta
Constant blocks
Yellow
Hybrid (subsystems grouping blocks, or Mux or Demux
blocks grouping signals with varying sample times)
Red
Fastest discrete sample time
Green
Second fastest discrete sample time
Blue
Third fastest discrete sample time
Light Blue
Fourth fastest discrete sample time
Dark Green
Fifth fastest discrete sample time
Orange
Sixth fastest discrete sample time
Cyan
Blocks in triggered subsystems
Gray
Fixed in minor step
To enable the sample time colors feature, select Sample Time Colors from the
Format menu.
Simulink does not automatically recolor the model with each change you make
to it, so you must select Update Diagram from the Edit menu to explicitly
update the model coloration. To return to your original coloring, disable sample
time coloration by again choosing Sample Time Colors.
When using sample time colors, the color assigned to each block depends on its
sample time with respect to other sample times in the model.
It is important to note that Mux and Demux blocks are simply grouping
operators – signals passing through them retain their timing information. For
this reason, the lines emanating from a Demux block may have different colors
if they are driven by sources having different sample times. In this case, the
Mux and Demux blocks are color coded as hybrids (yellow) to indicate that they
handle signals with multiple rates.
Similarly, Subsystem blocks that contain blocks with differing sample times
are also colored as hybrids, because there is no single rate associated with
them. If all of the blocks within a subsystem run at a single rate, then the
Subsystem block is colored according to that rate.
Associating User Data with Blocks
You can use Simulink’s set_param command to associate your own data with a
block. For example, the following command associates the value of the variable
mydata with the currently selected block.
set_param(gcb, 'UserData', mydata)
The value of mydata can be any MATLAB data type, including arrays,
structures, objects, and Simulink data objects.. Use get_param to retrieve the
user data associated with a block.
get_param(gcb, 'UserData')
The following command causes Simulink to save the user data associated with
a block in the model file of the model containing the block.
set_param(gcb, 'UserDataPersistent', 'on');
State Properties Dialog Box
The State Properties dialog box allows you to specify code generation options
for certain blocks with discrete states. To get help on using this dialog box, you
must install the Real-Time Workshop documentation and refer to the section
entitled "Block States: Storing and Interfacing."
Connecting Blocks
Simulink block diagrams use lines to represent pathways for signals among
blocks in a model
Simulink can connect blocks for you or you can connect the blocks
yourself by drawing lines from their output ports to their input ports.
Autoconnecting Blocks
You can command Simulink to connect blocks automatically. This eliminates
the need for you to draw the connecting lines yourself. When connecting blocks,
Simulink routes lines around intervening blocks to avoid cluttering the
diagram.
Connecting Two Blocks
To autoconnect two blocks:
1 Select the source block.
2 Hold down Ctrl and left-click the destination block.
Simulink connects the source block to the destination block, routing the line
around intervening blocks if necessary.
When connecting two blocks, Simulink draws as many connections as possible
between the two blocks as illustrated in the following example.
Before autoconnect
After autoconnect
Connecting Groups of Blocks
Simulink can connect a group of source blocks to a destination block or a source
block to a group of destination blocks.
To connect a group of source blocks to a destination block:
1 Select the source blocks.
2 Hold down Ctrl and left-click the destination block.
To connect a source block to a group of destination blocks:
1 Select the destination blocks.
2 Hold down Ctrl and left-click the source block.
Connecting Blocks Manually
Simulink allows you to draw lines manually between blocks or between lines
and blocks. You may want to do this if you need to control the path of the line
or to create a branch line.
Drawing a Line Between Blocks
To connect the output port of one block to the input port of another block:
1 Position the cursor over the first block’s output port. It is not necessary to
position the cursor precisely on the port. The cursor shape changes to a cross
hair.
2 Press and hold down the mouse button.
3 Drag the pointer to the second block’s input port. You can position the cursor
on or near the port, or in the block. If you position the cursor in the block,
the line is connected to the closest input port. The cursor shape changes to a
double cross hair.
4 Release the mouse button. Simulink replaces the port symbols by a
connecting line with an arrow showing the direction of the signal flow. You
can create lines either from output to input, or from input to output. The
arrow is drawn at the appropriate input port, and the signal is the same.
Simulink draws connecting lines using horizontal and vertical line segments.
To draw a diagonal line, hold down the Shift key while drawing the line.
Drawing a Branch Line
A branch line is a line that starts from an existing line and carries its signal to
the input port of a block. Both the existing line and the branch line carry the
same signal. Using branch lines enables you to cause one signal to be carried
to more than one block.
In this example, the output of the Product block goes to both the Scope block
and the To Workspace block.
To add a branch line, follow these steps:
1 Position the pointer on the line where you want the branch line to start.
2 While holding down the Ctrl key, press and hold down the left mouse button.
3 Drag the pointer to the input port of the target block, then release the mouse
button and the Ctrl key.
You can also use the right mouse button instead of holding down the left mouse
button and the Ctrl key.
Drawing a Line Segment
You may want to draw a line with segments exactly where you want them
instead of where Simulink draws them. Or, you might want to draw a line
before you copy the block to which the line is connected. You can do either by
drawing line segments.
To draw a line segment, you draw a line that ends in an unoccupied area of the
diagram. An arrow appears on the unconnected end of the line. To add another
line segment, position the cursor over the end of the segment and draw another
segment. Simulink draws the segments as horizontal and vertical lines. To
draw diagonal line segments, hold down the Shift key while you draw the lines.
Moving a Line Segment
To move a line segment, follow these steps:
1 Position the pointer on the segment you want to move.
2 Press and hold down the left mouse button.
3 Drag the pointer to the desired location.
4 Release the mouse button.
To move the segment connected to an input port, position the pointer over the
port and drag the end of the segment to the new location. You cannot move the
segment connected to an output port.
Moving a Line Vertex
To move a vertex of a line, follow these steps:
1 Position the pointer on the vertex, then press and hold down the mouse
button. The cursor changes to a circle that encloses the vertex.
2 Drag the pointer to the desired location.
3 Release the mouse button.
Inserting Blocks in a Line
You can insert a block in a line by dropping the block on the line. Simulink
inserts the block for you at the point where you drop the block. The block that
you insert can have only one input and one output.
To insert a block in a line:
1 Position the pointer over the block and press the left mouse button.
2 Drag the block over the line in which you want to insert the block.
3 Release the mouse button to drop the block on the line. Simulink inserts the
block where you dropped it.
Building Models
Here are some model-building hints you might find useful:
• Memory issues
In general, the more memory, the better Simulink performs.
• Using hierarchy
More complex models often benefit from adding the hierarchy of subsystems
to the model. Grouping blocks simplifies the top level of the model and can
make it easier to read and understand the model.
• Cleaning up models
Well organized and documented models are easier to read and understand.
Signal labels and model annotations can help describe what is happening in
a model.
• Modeling strategies
If several of your models tend to use the same blocks, you might find it easier
to save these blocks in a model. Then, when you build new models, just open
this model and copy the commonly used blocks from it. You can create a block
library by placing a collection of blocks into a system and saving the system.
You can then access the system by typing its name in the MATLAB command
window.
Generally, when building a model, design it first on paper, then build it using
the computer. Then, when you start putting the blocks together into a model,
add the blocks to the model window before adding the lines that connect
them. This way, you can reduce how often you need to open block libraries.
Modeling Equations
One of the most confusing issues for new Simulink users is how to model
equations. Here are some examples that may improve your understanding of
how to model equations.
Converting Celsius to Fahrenheit
To model the equation that converts Celsius temperature to Fahrenheit
TF = 9/5(TC) + 32
First, consider the blocks needed to build the model:
• A Ramp block to input the temperature signal, from the Sources library
• A Constant block to define a constant of 32, also from the Sources library
• A Gain block to multiply the input signal by 9/5, from the Math library
• A Sum block to add the two quantities, also from the Math library
• A Scope block to display the output, from the Sinks library
Next, gather the blocks into your model window.
Assign parameter values to the Gain and Constant blocks by opening
(double-clicking on) each block and entering the appropriate value. Then, click
on the Close button to apply the value and close the dialog box.
Now, connect the blocks.
The Ramp block inputs Celsius temperature. Open that block and change the
Initial output parameter to 0. The Gain block multiplies that temperature by
the constant 9/5. The Sum block adds the value 32 to the result and outputs the
Fahrenheit temperature.
Open the Scope block to view the output. Now, choose Start from the
Simulation menu to run the simulation. The simulation will run for 10
seconds.
Modeling a Simple Continuous System
To model the differential equation,
x′ ( t ) = – 2x ( t ) + u ( t )
where u(t) is a square wave with an amplitude of 1 and a frequency of 1
rad/sec. The Integrator block integrates its input, x′, to produce x. Other blocks
needed in this model include a Gain block and a Sum block. To generate a
square wave, use a Signal Generator block and select the Square Wave form
but change the default units to radians/sec. Again, view the output using a
Scope block. Gather the blocks and define the gain.
In this model, to reverse the direction of the Gain block, select the block, then
use the Flip Block command from the Format menu. Also, to create the branch
line from the output of the Integrator block to the Gain block, hold down the
Ctrl key while drawing the line.
Now you can connect all the blocks.
An important concept in this model is the loop that includes the Sum block, the
Integrator block, and the Gain block. In this equation, x is the output of the
Integrator block. It is also the input to the blocks that compute x′, on which it
is based. This relationship is implemented using a loop.
The Scope displays x at each time step. For a simulation lasting 10 seconds, the
output looks like this.
The equation you modeled in this example can also be expressed as a transfer
function. The model uses the Transfer Fcn block, which accepts u as input and
outputs x. So, the block implements x/u. If you substitute sx for x′ in the above
equation, you get
sx = – 2x + u
Solving for x gives
x = u ⁄ (s + 2)
or,
x ⁄ u = 1 ⁄ (s + 2)
The Transfer Fcn block uses parameters to specify the numerator and
denominator coefficients. In this case, the numerator is 1 and the denominator
is s+2. Specify both terms as vectors of coefficients of successively decreasing
powers of s. In this case the numerator is [1] (or just 1) and the denominator
is [1 2]. The model now becomes quite simple.
The results of this simulation are identical to those of the previous model.
Obrazový přenos
Definice:
kde:
Laplaceův obraz výstupní veličiny podle Laplaceova obrazu vstupní veličiny při nulových
počátečních podmínkách zleva.
bm .s m + ... + b1 .s + b0
B(s)
=
F ( s) =
A( s ) s r . a n .s n + ... + a1 .s + a 0
r je řád astatismu
n + r je řád soustavy
(
)
V Matlabu se pro vypsání Obrazového přenosu používá funkce TF (transfer function). Zadává se pomocí
čitatele B(s) a jmenovatele A(s). Musí se zadat zvlášť čitatel do určité proměnné, například do B, a to ve tvaru
B = b , bn−1 ,...., b1 , b0 a zvlášť jmenovatel do jiné proměnné, např. A, a to ve tvaru A = [a m , a m −1 ,...., a1 , a 0 ]
Zadání:
SYS = TF (Bs, As)
[
Př:
]
Bs = [1, 2];
As = [1, 2, 1];
SYS = TF (Bs, As)
Výsledek:
Transfer function:
s+2
s^2 + 2s + 1
Převod obrazového přenosu
Definice:
Polynom ve jmenovateli obrazového přenosu se nazývá charakteristický polynom a jeho kořeny
se nazývají póly - P systému.
Kořeny v čitateli se nazývají jako nuly - N dynamického systému.
Časová konstanta - K je podíl vyjádřených hodnot bm, an
F ( s) =
B( s ) bm .(s − s1b )(
. s − s2b ).....(s − smb )
= r
;
A( s ) s .an (s − s1 )(
. s − s2 )......(s − sn )
K=
bm
an
V Matlabu se k vypsání pólů (P), nul (N) a časové konstanty (K) se používá funkce TF2ZP - převod "transfer
function to zero-pole".
Zadání :
[N, P, K] = TF2ZP(Bs, As)
Pokud chceme vypsat pouze nuly, póly nebo zesílení, použijeme funkce: POLE, ZERO, DCGAIN
Zadání:
P = POLE (SYS)
N = ZERO (SYS)
K = DCGAIN (SYS)
Př:
Bs = [1, 2];
As = [1, 2, 1];
[N, P, K] = TF2ZP(Bs, As)
Výsledek:
N =
-2
P =
-1
-1
K =
1
Stavový popis
Stavový popis je definován ve tvaru:
•
dx
= Ax + Bu
x=
dt
y = Cx + Du
Pro tuto operaci se v Matlabu používá funkce TF2SS "transfer function to state-space".
Zadání:
[A,B,C,D] = TF2SS (B,A)
Př:
Bs = [1, 2];
As= [1, 2, 1];
[A,B,C,D] = TF2SS (Bs, As)
nebo:
[A,B,C,D] = TF2SS ([1, 2], [1, 2, 1])
Výsledek:
A =
-2
1
-1
0
B =
1
0
C =
1
2
D =
0
Identifikace dat
b .s m + ... + b1 .s + b0
B(s)
= r m n
A( s ) s . a n .s + ... + a1 .s + a0
Pokud máme již zadán obrazový přenos nebo převedeme jiný způsob na obrazový přenos a potřebujeme zjistit,
jaké jsou v Obrazovém přenosu zadané hodnoty, můžeme použít funkci TFDATA.
Zadání:
[Bs, As] = TFDATA (sys, ‘v’)
nebo
[Bs, As] = TFDATA (sys)
F ( s) =
Př:
(
SYS = TF([1 2],[1 2 1])
[Bs, As] = TFDATA (SYS, ’v’)
[Bs, As] = TFDATA (SYS)
Výsledek:
Transfer function:
s+2
s^2 + 2s + 1
)
Bs =
0
1
2
As =
1
2
1
Bs =
[1x3 double]
As =
[1x3 double]
=> matice o jednom řádku a třech sloupcích
Zadávání pomocí pólů a nul
Definice:
Polynom ve jmenovateli obrazového přenosu se nazývá charakteristický polynom a jeho kořeny
se nazývají póly - P systému.
Kořeny v čitateli se nazývají jako nuly - N dynamického systému.
Časová konstanta - K je podíl vyjádřených hodnot bm, an
F ( s) =
B( s ) bm .(s − s1b )(
. s − s2b ).....(s − smb )
= r
;
A( s ) s .an (s − s1 )(
. s − s2 )......(s − sn )
K=
bm
an
Zadání:
SYS = ZPK (N, P, K)
Př:
N = [-2];
P = [-1; -1];
K = [1];
SYS = ZPK (N, P, K)
Výsledek:
Zero/pole/gain:
(s + 2)
(s + 1)^ 2
Převod nul a pólů na stavový popis
Stavový popis je definován ve tvaru:
•
dx
= Ax + Bu
x=
dt
y = Cx + Du
Pro tuto operaci se v Matlabu používá funkce ZP2SS „Zero-pole to state-space“.
Zadání:
[A,B,C,D] = ZP2SS (N, P, K)
Př:
N = [-2];
P = [-1; -1];
K = [1];
[A,B,C,D] = ZP2SS (N, P, K)
nebo:
[A,B,C,D] = ZP2SS ([-2], [-1; -1],[1])
Převod nul a pólů na obrazový přenos
Obrazový přenos se definuje jako Laplaceův obraz výstupní veličiny ku Laplaceově obrazu vstupní veličiny
při nulových počátečních podmínkách zleva.
b .s m + ... + b1 .s + b0
B(s)
= r m n
F ( s) =
A( s ) s . a n .s + ... + a1 .s + a0
kde: r je řád astatismu
n + r je řád soustavy
(
)
Pro tuto operaci se v Matlabu používá funkce ZP2TF „Zero-pole to transfer function“.
Zadání:
[NUM, DEN] = ZP2TF (N, P, K)
Př:
N = [-2];
P = [-1; -1];
K = [1];
[NUM, DEN] = ZP2TF (N, P, K)
nebo:
[NUM, DEN] = ZP2TF ([-2], [-1; -1],[1])
Zadávání pomocí stavového popisu
Stavový popis je definován ve tvaru:
•
dx
= Ax + Bu
x=
dt
y = Cx + Du
Zadání:
SYS = SS (A, B, C, D)
Př:
A= [-2, –1; 1, 0];
B = [1; 0];
C = [1, 2];
D = [0];
SYS = SS (A, B, C, D)
Výsledek:
a =
x1
x2
x1
-2
1
x1
x2
u1
1
0
b =
x2
-1
0
c =
y1
x1
1
y1
u1
0
x2
2
d =
Continuous-time system.
Převod stavového popisu na nuly a póly
Definice:
Polynom ve jmenovateli obrazového přenosu se nazývá charakteristický polynom a jeho kořeny
se nazývají póly - P systému.
Kořeny v čitateli se nazývají jako nuly - N dynamického systému.
Časová konstanta - K je podíl vyjádřených hodnot bm, an
F ( s) =
B( s ) bm .(s − s1b )(
. s − s2b ).....(s − smb )
= r
;
A( s ) s .an (s − s1 )(
. s − s2 )......(s − sn )
K=
bm
an
Pro tuto operaci se v Matlabu používá funkce SS2ZP „State-space to Zero-pole“.
Zadání:
[N, P, K] = SS2ZP (A, B, C, D)
Př:
A= [-2, –1; 1, 0];
B = [1; 0];
C = [1, 2];
D = [0];
[N, P, K] = SS2ZP (A, B, C, D)
Převod stavového popisu na obrazový přenos
Obrazový přenos se definuje jako Laplaceův obraz výstupní veličiny ku Laplaceově obrazu vstupní veličiny
při nulových počátečních podmínkách zleva.
b .s m + ... + b1 .s + b0
B(s)
= r m n
F ( s) =
A( s ) s . a n .s + ... + a1 .s + a0
kde: r je řád astatismu
n + r je řád soustavy
(
)
Pro tuto operaci se v Matlabu používá funkce SS2TF „Zero-pole to transfer function“.
Zadání:
[NUM, DEN] = SS2TF (A, B, C, D)
Př:
A= [-2, –1; 1, 0];
B = [1; 0];
C = [1, 2];
D = [0];
[NUM, DEN] = SS2TF (A, B, C, D)
nebo:
[NUM, DEN] = SS2TF ([-2, -1; 1, 0], [1; 0],[1, 2],[0])
Nastavení parametrů obrazového přenosu
Matlab nám umožňuje též měnit nejen nastavení základních parametrů, ale také mnoho dalších (např. vstupní
zpoždění, výstupní zpoždění, název vstupní proměnné, název výstupní proměnné, … atd.). K těmto hodnotám
nám umožní nejjednodušší přístup funkce GET a SET, kde pomocí funkce GET zjišťujeme již zadané
informace. Pomocí funkce SET tyto hodnoty měníme.
Zadání:
get (TF)
get (SS)
get (ZPK)
Výsledek:
num:
den:
Variable:
Ts:
InputDelay:
OutputDelay:
ioDelayMatrix:
InputName:
OutputName:
InputGroup:
OutputGroup:
Notes:
UserData:
{}
{}
's'
0
[0x1
[0x1
[]
{0x1
{0x1
{0x2
{0x2
{}
[]
double]
double]
cell}
cell}
cell}
cell}
Polynom As
Polynom Bs
Proměnná (s, p, z, z^-1, q)
Vzorkovací čas
Vstupní zpoždění
Výstupní zpoždění
Vstupní/Výstupní matice zpoždění
Jméno vstupní veličiny
Jméno výstupní veličiny
Vstupní skupina
Výstupní skupina
Popis, poznámky
Uživatelská data, která mohou být libovolná
a: []
b: []
c: []
d: []
e: []
StateName: {0x1 cell}
Ts: 0
InputDelay: [0x1 double]
OutputDelay: [0x1 double]
ioDelayMatrix: []
InputName: {0x1 cell}
OutputName: {0x1 cell}
InputGroup: {0x2 cell}
OutputGroup: {0x2 cell}
Notes: {}
UserData: []
Matice A
Matice B
Matice C
Matice D
Matice E
Jméno Stavového popisu
Vzorkovací čas
Vstupní zpoždění
Výstupní zpoždění
Vstupní/Výstupní matice zpoždění
Jméno vstupní veličiny
Jméno výstupní veličiny
Vstupní skupina
Výstupní skupina
Popis, poznámky
Uživatelská data, která mohou být libovolná
z:
p:
k:
Variable:
Ts:
InputDelay:
OutputDelay:
ioDelayMatrix:
InputName:
OutputName:
InputGroup:
OutputGroup:
Notes:
UserData:
Hodnoty nul
Hodnoty pólů
Hodnota konstanty zesílení
Proměnná (s, p, z, z^-1, q)
Vzorkovací čas
Vstupní zpoždění
Výstupní zpoždění
Vstupní/Výstupní matice zpoždění
Jméno vstupní veličiny
Jméno výstupní veličiny
Vstupní skupina
Výstupní skupina
Popis, poznámky
Uživatelská data, která mohou být libovolná
{}
{}
[]
's'
0
[0x1
[0x1
[]
{0x1
{0x1
{0x2
{0x2
{}
[]
double]
double]
cell}
cell}
cell}
cell}
Pro změnu některé z uvedených položek se použije funkce SET. Musíme si však nejprve zavést SYS1, SYS2,
SYS3, postupně Obrazový přenos, Stavový popis, Nuly, póly a konstantu zesílení.
Zadání:
set (SYS1, ‘Properties’, Value)
set (SYS2, ‘Properties’, Value)
set (SYS3, ‘Properties’, Value)
Př:
kde Properties je hodnota, kterou chceme měnit
Bs = [1, 2];
As = [1, 2, 1];
SYS1 = TF (Bs, As)
set (SYS1, ‘Variable’, ‘p’);
SYS1
A= [-2, –1; 1, 0];
B = [1; 0];
C = [1, 2];
D = [0];
SYS2 = SS (A, B, C, D);
set (SYS2, ‘InputDelay’, 1.5)
set (SYS2, ‘OutputDelay’, 2)
SYS2
N = [-2];
P = [-1; -1];
K = [1];
SYS3 = ZPK (N, P, K)
set (SYS3, ‘InputName’, ‘u(t)’)
set (SYS3, ‘OutputName’, ‘y(t)’)
SYS3
Výsledek:
Transfer function:
s+2
s^2 + 2s + 1
Transfer function:
p+2
p^2 + 2 p + 1
a =
x1
x2
x1
-2
1
x1
x2
u1
1
0
y1
x1
1
y1
u1
0
x2
-1
0
b =
c =
x2
2
d =
Input delays (listed by channel): 1.5
Output delays (listed by channel): 2
Continuous-time model.
Zero/pole/gain:
(s + 2)
(s + 1)^ 2
Zero/pole/gain from input "u(t)" to output "y(t)":
( s + 2)
( s + 1) ^ 2
Dopravní zpoždění
Pokud máme zavedený určitý přenos a v něm zadáno vstupní dopravní zpoždění nebo výstupní dopravní
zpoždění či oboje a potřebujeme zjistit celkové dopravní zpoždění, použijeme příkaz TOTALDELAY. K
nastavení zpoždění je nejlepší použít funkci SET (popsanou dříve).
Zadání:
Př:
TOTALDELAY (SYS)
Bs = [1, 2];
As = [1, 2, 1];
SYS = TF (Bs, As);
set (SYS, ‘InputDelay’, 1.5)
set (SYS, ‘OutputDelay’, 2)
SYS
TOTALDELAY (SYS)
Výsledek:
Transfer function:
exp(− 3.5 * s )*
s+2
s^2 + 2s + 1
ans =
3.5000
Generování spojitého systému
Pro generování spojitého systému nám jako základ slouží rovnice:
1
1
h( s ) = 2
kde ω n = … přirozená úhlová frekvence (wn)
2
Tn
s + 2ζω n s + ω n
ζ … poměrné tlumení 0,1 (z)
Pro získání obrazového přenosu nebo stavového popisu z konstant ζ a ω n nám slouží funkce ORD2
Zadání:
[Bs, As] = ORD2(wn,z)
[A,B,C,D] = ORD2(wn,z)
Př:
[Bs, As] = ORD2 (0.4, 2.4)
[A,B,C,D] = ORD2 (0.4, 2.4)
Výsledek:
Z toho vyplývá ω n = 2,4 rad / sec; ζ = 0,4
Bs =
1
As =
1.0000
1.9200
0.1600
A =
0
-0.1600
1.0000
-1.9200
B =
0
1
C =
1
0
D =
0
Rozklad na parciální zlomky
Rozklad polynomu na parciální zlomky se provádí pomocí limitních vztahů. A je definován takto:
b .s m + ... + b1 .s + b0
B(s)
F ( s) =
= r m n
A( s ) s . a n .s + ... + a1 .s + a0
r
r
r
B(s )
F ( s) =
= 1 + 2 + ... + n + k ( s )
A( s ) s − p1 s − p 2
s − pn
Pro tuto operaci se v Matlabu používá funkce RESIDUE. Musíme však znát některé podmínky rozkladu na
parciální zlomky, a to ty, že pokud máme n-násobné kořeny, tak se v rozkladu zobrazí nejen samotný kořen, ale
též kořen na druhou až na n-násobnost kořene.
Zadání:
[R, P, K] = RESIDUE (Bs, As)
(
Př:
)
Bs = [1, 2];
As= [1, 2, 1];
[R, P, K] = RESIDUE (Bs, As)
Výsledek:
R =
1
1
P =
-1
-1
K =
[]
Z čehož vyplývá, že K = 0. Pro tento příklad (jehož polynom je vícenásobný) je výsledek ve tvaru:
B(s )
1
1
F ( s) =
=
+
+0
A( s ) s + 1 (s + 1)2
Výpočet kořenů polynomu
Jestliže máme přechodovou funkci a vyjádříme z ní charakteristickou rovnici, můžeme pomocí funkce
ROOTS zjistit její kořeny.
b .s m + ... + b1 .s + b0
B(s)
F ( s) =
= r m n
A( s ) s . a n .s + ... + a1 .s + a0
(
(
Ch.r. s r . a n .s n + ... + a1 .s + a 0
)
)
Zadání:
K = ROOTS (As)
Př:
As = [1, 2, 1];
K = ROOTS (As)
Výsledek:
K =
-1
-1
Z čehož vyplývá, že kořeny jsou s1 = −1; s 2 = −1 . ⇒ (s + 1)(s + 1)
Zobrazení pólů a nul v komplexní rovině
Zobrazení pólů a nul se dá také vyjádřit v komplexní rovině, na imaginární a reálné ose. Pro tuto operaci
existuje v Matlabu funkce PZMAP (PoleZeroMap). K jejímu vyjádření použijeme již dříve získanou
proměnnou SYS.
Zadání:
PZMAP = (SYS)
Př:
Bs = [1, 2];
As = [1, 2, 1];
SYS = TF (Bs, As);
PZMAP(SYS)
Výsledek:
Nuly se zobrazí jako kolečka a póly jako křížky.
Graf frekvenční charakteristiky v komplexní rovině
Definice:
Frekvenční charakteristiku dostaneme, jestliže dosadíme v přenosové funkci F ( s ) = F (iω ) .
Y (iω )
F (iω ) =
= F ( s ) s −iω
U (iω )
F (iω ) = Re{F (iω )}+ i Im{F (iω )}
Matlab neumí převést Obrazový přenos teoreticky, pouze nám ho umožňuje zobrazit graficky pomocí funkce
NYQUIST.
Zadání se provádí:
NYQUIST (SYS)
Př:
Bs = [1, 2];
As= [1, 2, 1];
SYS = TF (Bs, As);
NYQUIST (SYS)
Výsledek:
Logaritmická amplitudová a fázová charakteristika
F (iω ) = F ( s ) s =( iω ) = F (iω ) . exp iϕ (ω )
F (iω ) dB = 20. log F (iω )
K této operaci nám v Matlabu slouží funkce BODE, která nám opět pouze vykreslí Logaritmicko amplitudovou
a fázovou charakteristiku.
Zadání:
BODE (SYS)
Př:
Bs = [1, 2];
As= [1, 2, 1];
SYS = TF (Bs, As);
BODE (SYS)
Výsledek:
V otevřeném okně se nahore vykreslí Logaritmicko amplitudová charakteristika a dole je Logaritmicko fázová charakteristika.
Přechodová funkce
Přechodová funkce h(t) je reakce dynamického systému na budící funkci ve tvaru jednotkového skoku
při nulových počátečních podmínkách zleva.
•
1
H ( s ) = F ( s ). ;
h(t ) = H ( s )
•
s
Pro získání klasické přechodové funkce h(t) použijeme funkci ILAPLACE “Inverzní Laplaceova
funkce“ z funkce H(s).
Pro vykreslení přechodové fce použijeme funkci STEP - čili odezvu obrazového přenosu na jednotkový
skok s počátečními podmínkami rovnými nule (p.p.=0) zleva. Pokud chceme znát konkrétní hodnoty
v závislosti na čase, použijeme přiřazení dle příkladu.
Zadání:
ILAPLACE ( „Přenosová funkce“*1/s )
STEP (SYS)
[x, t] = STEP (SYS)
Numerické_Vyjádření = [x, t]
Při zadávání můžeme napsat za SYS dobu simulace, po kterou se budou vypočítávat hodnoty.
Zadání:
STEP (SYS, T)
kde T je čas simulace
[x, t]= STEP (SYS, T)
Př:
Bs = [1, 2];
As= [1, 2, 1];
SYS = TF (Bs, As);
SYMS s t;
ILAPLACE ((s + 2)/(s^2 + 2*s + 1)*1/s)
STEP (SYS)
[x, t]= STEP (SYS);
Numericke_Vyjadreni = [x, t]
Výsledek:
ans
= -t*exp(-t)-2*exp(-t)+2
Numerické_Vyjádření =
0
0.1277
0.2535
0.3153
0.5519
0.6079
0.8179
0.9139
1.1663
0
0.1280
0.2560
0.3200
0.5760
0.6400
0.8960
1.0240
1.4080
Tato funkce nám udává, že budeme pracovat s neurčitými proměnnými
Toto jsou čísla, která získáme z přenosové funkce TF
Impulzní přechodová funkce
Definice:
Derivace Přechodové funkce.
Je reakce dynamického systému na budící funkci ve tvaru Dirackova pulsu U ( A) = δ ( A) při
nulových počátečních podmínkách zleva.
g (t ) =
h(t )
;
dt
•
g (t ) = G ( s ) ;
•
G ( s ) = F ( s ).1
Pro získání Impulzní (váhové) přechodové funkce g(t) použijeme funkci ILAPLACE “Inverzní Laplaceova
funkce“ z funkce F(s). Pro vykreslení Impulzní (váhové) přechodové fce použijeme funkci IMPULSE - čili
odezvu obrazového přenosu na Dirackův puls s počátečními podmínkami rovnými nule (p.p.=0) zleva. Pokud
chceme znát konkrétní hodnoty v závislosti na čase, použijeme přiřazení dle příkladu.
Zadání:
ILAPLACE („Přenosová funkce“ )
IMPULSE (SYS)
[x, t]= STEP (SYS)
Numerické_Vyjádření = [x, t]
Př:
Bs = [1, 2];
As= [1, 2, 1];
SYS = TF (Bs, As);
SYMS s t;
ILAPLACE ((s + 2)/(s^2 + 2*s + 1))
IMPULSE (SYS)
[x, t]= IMPULSE (SYS);
Numericke_Vyjadreni = [x, t]
Výsledek:
ans =t*exp(-t)+exp(-t)
Numericke_Vyjadreni =
1.0000
0
0.9723
0.2560
0.8202
0.7680
0.4281
1.9200
0.3932
2.0480
0.2077
2.9440
0.0940
3.9680
0.0407
4.9920
0.0191
5.8880
0.0079
6.9120
0.0032
7.9360
0.0013
8.9600
0.0005
9.9840
0.0001
11.9040
Tato funkce nám udává, že budeme pracovat s neurčitými proměnnými
Toto jsou čísla, která získáme z přenosové funkce TF
Odezva systému na budící signál
Pokud chceme zjistit, jakou bude mít systém odezvu na zvolený budící signál, musíme jej nejprve
definovat. A to buď sami tím, že napíšeme do Matlabu u a t, což budou matice o jednom řádku a n prvcích. Obě
matice musí být stejně dlouhé. Anebo při přípravě budícího signálu můžeme použít funkci [u, t] =
GENSIG(type, Tau, Tf, Ts), kde type je buď ‘sine’ - sinusový signál, ‘square’ – schodová funkce nebo
‘pulse’ – signál složený z jednotlivých pulsů (pro všechny tři je umax rovno jedné). Tau je perioda vzorkování,
Tf – celková doba simulace, Ts – vzorkovací čas. Pokud se chceme podívat na námi vytvořenou budící fci,
použijeme příkaz plot.
Nyní, když si připravíme budící signál, můžeme začít simulovat, k čemuž nám dopomůže funkce LSIM.
Zadání se provádí:
[u,t] = GENSIG (type, Tau, Tf, Ts)
plot (u,t)
LSIM (SYS, u, t)
Př:
Bs = [1, 2];
As= [1, 2, 1];
SYS = TF (Bs, As);
[u, t] = GENSIG (‘square’, 5, 30, 0.1);
plot (t, u)
LSIM (SYS, u, t)
[y,t] = LSIM (SYS, u, t);
Num_vyjadreni = [y,u]
plot (t,Num_vyjadreni)
kde type j-‘sine’; ‘square’; ‘pulse’
=> perioda = 5, celkový čas simulace = 30, vzorkovací čas je 0.1
Výsledek:
Toto bude výsledek
funkce Plot, kde jsme
pomocí příkazu
GENSIG nadefinovali
jednotlivé skoky.
Podívejme se na zadání:
Tau = 5
Tf = 30
Ts = 0.1 … toto se
projeví pouze na
lehkém zešikmení
skoků.
Takto bude reagovat
soustava na definovaný
budící signál. Je vidět,
že by chtěla zvětšit
doba periody, protože
nedáváme dostatek
času soustavě na
ustálení. Ze zadání
víme, že hodnota
ustálení je 2, ale zde se
dostáváme pouze
k hodnotě 1,6.
Num_vyjadreni =
0
0
0
1.0000
1.1006
1.0000
1.6008
1.0000
1.6306
0
0.3478
0
0.3222
1.0000
1.6465
1.0000
1.6725
0
0.3529
0
0.3269
1.0000
1.6470
1.0000
1.6730
0
0.3530
0
0.3270
1.0000
1.6470
1.0000
1.6730
0
0.3530
0
0.3270
1.0000
1.6470
1.0000
1.6730
0
0.3530
0
0.3270
1.0000
1.6470
1.0000
1.6730
0
Zobrazení přenosů do společného grafu
V případě, že máme zadány dva nebo více přenosů (libovolně zadány) a potřebujeme je mezi sebou
porovnat, můžeme si je zobrazit do jednoho grafu pomocí funkce LTIVIEW.
Zadání:
Kde plottype jsou:
Př:
LTIVIEW (plottype, SYS1, SYS2, … , SYSn)
‘step’
- odezva na jednotkový skok
‘impulse’
- impulsní (váhová) přechodová fce
‘bode’
- logaritmicko amplitudová a fázová charakteristika
‘nyquist’
- frekvenční charakteristiky v komplexní rovině
‘lsim’
- odezva na libovolně zvolenou budící fci
a další, které nepoužíváme.
Bs = [1, 2];
As = [1, 2, 1];
N = [-3];
P = [-3; -2];
K = [1];
SYS1 = TF (Bs, As)
SYS2 = ZPK (N, P, K)
LTIVIEW ( 'step', SYS1, SYS2)
… SYS1 je znázorněn tečkovaně
Výsledek:
Transfer function:
s+2
s^2 + 2s + 1
Zero/pole/gain:
(s + 3)
(s + 3)(s + 2)
Tento způsob zobrazování není špatný, ale neumožňuje nám vypsat numerické vyjádření přechodových
funkcí. Proto LTIVIEW budeme používat pouze pro porovnání jednotlivých přenosů, ať už přechodové
funkce, impulzní (váhové) přechodové funkce a dalších (výše jsou popsány).
Způsoby zobrazení hodnot
Pokud ale potřebujeme znát numerické vyjádření, použijeme pro ně samostatné příkazy a funkce (STEP,
IMPULSE, LSIM) a vypíšeme si jejich hodnoty v kombinaci s PLOT.
Při použití příkazu PLOT máme možnost zobrazovat pouze prvních X hodnot, a to ve tvaru (1:10),
čímž říkáme, že chceme zobrazit pouze prvních 10 hodnot.
Nebo můžeme jeden graf rozdělit na N možných grafů pomocí příkazu SUBPLOT.
Pokud potřebujeme k práci mřížku, můžeme použít funkce GRID ON – mřížka zapnuta, nebo GRID
OFF – mřížka vypnuta.
Dále si můžeme definovat velikost os (příkaz AXIS) nebo počet zobrazovaných hodnot.
Pro popis slouží příkaz TITLE – titulek.
Pro popis jednotlivých os nám slouží příkazy XLABEL a YLABEL pro osu x a y.
Pokud jsme již použili příkaz SUBPLOT a později chceme použít pouze PLOT, musíme nejprve zadat
SUBPLOT (1,1,1). Jinak by nám příkaz PLOT vykreslil graf do posledního okna u příkazu SUBPLOT.
Chceme-li vytvořit několik nezávislých obrázkových oken, použijeme příkaz FIGURE (N), kde N je
číslo okna, které chceme aktivovat.
Pokud chceme smazat aktuální okno, použijeme příkaz CLF.
Zavřít požadované okno se dá příkazem CLOSE (N).
Zadání:
plot (x)
plot (t,x,‘b‘)
SUBPLOT (m,n,N)
AXIS ([xmin xmax ymin ymax zmin zmax])
plot (x(1:100))
TITLE (‘zde je mozno napsat titulek’)
figure (2)
plot (x(1:50))
CLF
XLABEL ('Toto je osa x')
YLABEL ('Toto je osa y')
CLOSE (2)
Př:
SYS1 = TF ([1 2], [1 2 1]);
SYS2 = TF ([3 2], [1 5 6]);
SYS3 = TF ([1], [1 1.92 0.16]);
[x1,t1] = STEP (SYS1,50);
[x2,t2] = STEP (SYS2,50);
[x3,t3] = STEP (SYS3,50);
figure (2);
plot (t1,x1,t2,x2,t3,x3);
XLABEL (‘čas t’);
YLABEL (‘hodnota y’)
nebo
SUBPLOT (3,1,1)
plot (t1,x1,’b’);
AXIS ([0 10 0 2]);
grid on;
TITLE (‘Přechodová fce č.1’)
SUBPLOT (3,1,2)
b ..je typ barvy
m … počet řádků
n … počet sloupců
N … pořadové číslo grafu
osa z je pouze pro 3D grafy
zobrazí prvních 100 hodnot proměnné x
kde
kde
zobrazí prvních 50 hodnot proměnné x
plot (t2,x2,’g’);
AXIS ([0 6 0 0.6]);
grid on;
TITLE (‘Přechodová fce č.3’)
SUBPLOT (3,1,3)
plot (t3,x3,‘r‘);
grid off;
TITLE (‘Přechodová fce č.3’)
Výsledek:
Pro příkaz PLOT.
Pro příkaz SUBPLOT.
Zobrazení pomocí spektra
Pokud chceme zobrazit pouze číselné hodnoty místo spojitého obrazu, použijeme příkaz STEM.
Př:
X(1:5) = 0;
X(6:15) = 1;
X(16:25) = 2;
STEM (X);
Výsledek:
Porovnejte tento výsledek s výsledkem, který by dal příkaz PLOT (X).
Zobrazení podle lichoběžníkového pravidla
Podle lichoběžníkového pravidla platí, že pokud máme diskrétní hodnoty, tak dokud nepřijde další
hodnota, výstup nám drží hodnotu příchozí.
Pro zobrazování podle tohoto pravidla použijeme příkaz STAIRS (schody).
Př:
X(1:5) = 0;
X(6:15) = 1;
X(16:25) = 2;
STAIRS (X);
Výsledek:
Porovnejte tento výsledek s výsledky, které by daly příkazy PLOT (X) a STEM (X).
Návrh zpětné vazby s kompenzátorem
Soustava s jedním vstupem a jedním výstupem (SISO). V Matlabu se funkce nazývá RLTOOL. Pokud
napíšeme pouze tento příkaz, objeví se :
Zadání je ve tvaru:
RLTOOL (SYS)
nebo
RLTOOL (SYS, COMP)
– kde SYS je zadaný přenos (pomocí SS, TF nebo ZPK)
– kde COMP je hodnota kompenzátoru (pomocí SS, TF nebo
ZPK). Pozor, nestačí pouze hodnota zesílení.
Zadaný přenos SYS se nahradí za P (zadání H, F je vysvětleno dále).
Jsou dvě možnosti zapojení kompenzátoru, a to buď do přímé větve nebo do
zpětné vazby (viz obr.)
Pro zadávání jedné z těchto dvou možností je:
LocationFlag = 1 Poloha kompenzátoru v přímé větvi (nastaveno
jako default)
LocationFlag = 2 Poloha kompenzátoru ve zpětné vazbě
V tomto případě se zadání provádí:
RLTOOL (SYS, COMP, LocationFlag)
Lze také definovat, zda se jedná o kladnou nebo zápornou zpětnou vazbu - nastaví se pomocí
parametru FeedbackSign. Pokud nastavíme do této proměnné hodnotu –1, máme zápornou zpětnou vazbu
(která je nastavena default), v případě hodnoty +1 dostáváme kladnou zpětnou vazbu.
V tomto případě se zadání provádí:
RLTOOL (SYS, COMP, LocationFlag, FeedbackSign)
Jedna z možností je otevřít pouze RLTOOL bez jakýchkoliv parametrů, kde parametry můžeme nastavit až
přes menu. Proto si nejprve navolíme přenosy (pomocí SS, TF nebo ZPK). Otevřeme RLTOOL a v menu File
– Import model… (Ctrl + I) můžeme dosadit za P, H nebo F námi zadané přenosy. Můžeme zde též nastavit
kompenzátor v menu Tolls – Edit Compensator…, kde zadáme nuly (zero) a póly (pole).
Hodnotu zesílení můžeme zadat přímo v okně Root Locus Design, stejně jako nastavení kladné nebo záporné
zpětné vazby. Můžeme si zde také nechat vykreslit přechodovou funkci (‘step’), přechodovou (váhovou)
funkci (‘impulse’), logaritmicko amplitudovou a fázovou charakteristiku (‘bode’) nebo frekvenční
charakteristiku v komplexní rovině (‘nyquist’) a další, které nepoužijeme.
Př:
Bs = [1, 2];
As = [1, 2, 1];
SYS = TF (Bs, As);
COMP = TF(2, 1);
LocationFlag = 2;
FeedbackSign = -1;
RLTOOL (SYS, COMP, LocationFlag, FeedbackSign)
Výsledek:
Bloková algebra
Blokovými schématy vyjadřujeme vazby mezi dílčími – samostatnými systémy, které se vzájemně ovlivňují a
vytvářejí složitý dynamický celek.
Systém úprav vedoucí k vyjádření dynamických vlastností těchto celků označujeme jako blokovou algebru.
Máme několik základních schémat, která umí Matlab velice jednoduše vyřešit, avšak rozklad na tyto základní
prvky musíme učinit sami.
Zpětná vazba
obr 1.
Vyjádření záporné zpětné vazby v Matlabu se provede pomocí příkazu FEEDBACK.
obr 2.
Zadání:
a) pro obr 1.
b) pro obr 2. levý:
c) pro obr 2. pravý:
SYS = FEEDBACK (SYS1, SYS2)
SYS = FEEDBACK (G, 1)
SYS = FEEDBACK (1, G)
obr 3.
Vyjádření kladné zpětné vazby v Matlabu se provede pomocí příkazu FEEDBACK.
Zadání:
d) pro obr 3.
SYS = FEEDBACK (SYS1, -SYS2)
e) obdobně též pro kladnou zpětnou vazbu na obr 2.
SYS = FEEDBACK (G, -1)
SYS = FEEDBACK (1, -G)
Sériové zapojení
Zadání:
SYS = SERIES (SYS1, SYS2)
Paralelní zapojení
Zadání:
SYS = PARALLEL (SYS1, SYS2)
V případě sčítacího místa s mínusy se zadání provádí pomocí –SYS1 (případně –SYS2)
Př:
SYS1 = TF([2 1],[1 2 1]);
SYS2 = TF([5],[1 5 6]);
SYS_ZV = FEEDBACK (SYS1, SYS2)
SYS_ZV_1 = FEEDBACK (SYS1, 1)
SYS_ZV_2 = FEEDBACK (1, SYS2)
SYS_SER = SERIES (SYS1, SYS2)
SYS_PAR = PARALLEL (SYS1, SYS2)
Výsledek:
Transfer function: SYS_ZV
2 s ^3 + 11s ^ 2 + 17 s + 6
s ^ 4 + 7 s ^3 + 17 s ^ 2 + 27 s + 11
Transfer function:
2s + 1
s^2 + 4s + 2
SYS_ZV_1
Transfer function:
s ^ 2 + 5s + 6
s ^ 2 + 5s + 11
SYS_ZV_2
Transfer function: SYS_SER
10 s + 5
s ^ 4 + 7 s ^3 + 17 s ^ 2 + 17 s + 6
Transfer function: SYS_PAR
2 s ^3 + 16 s ^ 2 + 27 s + 11
s ^ 4 + 7 s ^3 + 17 s ^ 2 + 17 s + 6
Př:
S1 =
s+2
2
s + 2s + 1
S2 =
3
s+2
S3 =
2
s
S4 =
s +1
s
S5 =
4s 2 + 2s + 1
s2 + s
1
s + 1,92 s + 0,16
s +1
S7 = 2
s + 5s + 6
S6 =
2
Úpravou dle obrázků dostaneme:
A=
S3
1 + S 3.S 5
S12 = S1.S 2
B = S 4 + S12
C = A.B
D = S1.S 6
1
E=
1+ S6
F = S 7 .E
G=C−D
H = G .F
I=
1
1− H
J = I .C
Zadání do Matlabu: S1 = TF ([1 2],[1 2 1]); S2 = TF ([3],[1 2]); S3 = TF ([2],[1 0]);
S4 = TF ([1 1],[1 0]); S5 = TF ([4 2 1],[1 1 0]); S6 = TF ([1],[1 1.92 0.16]);
S7 = TF ([1 1],[1 5 6]);
A = FEEDBACK (S3,S5); S12 = SERIES (S1,S2); B = PARALLEL (S12,S4);
C = SERIES (A,B); D = SERIES (S1,S6); E = FEEDBACK (1,S6);
F = SERIES (S7,E); G = PARALLEL (C,-D); H = SERIES (G,F);
I = FEEDBACK (1,-H); J = SERIES (I,C);
Zde je popsán jeden konkrétní příklad řešení Blokové Algebry. Pro lepší orientaci je vhodné
vyzkoušet příklad v Matlabu i v Simulinku. Tak se nejlépe pozná, že výsledný přenos je
ve všech bodech řešení příkladu stejný. Výsledná funkce J bude relativně nepřehledná (v čitateli s21 a ve
jmenovateli s22). Pokud zapojíte první a poslední obrázek s příslušnými přenosy, bude se přechodová funkce ve
vyšších časech lišit. To je způsobeno zaokrouhlováním Matlabu ve výsledném přenosu J.
Převod spojitého přenosu na diskrétní
V praxi se většinou nevyskytují Spojité systémy, ale většinou se jedná o Diskrétní systémy. Zde je tento systém
vzorkován v určitých časových intervalech (toto se v systému projeví jako vzorkovací čas Ts).
Matlab nám dává možnost volby několika metod přenosu:
‘zoh’
Metody:
zero-order hold - přidržení nulového řádu
‘foh’
first-order hold - trojúhelníková aproximace
‘tustin’
vícelineární Tustinova aproximace
‘prewarp’
Tustinova aproximace s frekvenční překroucením
‘matched’
metoda párování póly-nuly
V Matlabu se používá funkce C2D “Continuous to Diskret system”
Zadání:
SYS = C2D (SYS1, Ts)
Ts….vzorkovací čas
SYS = C2D (SYS, Ts, method)
method - zvolená metoda
nebo
Př:
SYS1 = TF([1 2],[1 2 1]);
SYS = C2D (SYS1, 0.1)
Výsledek:
Transfer function:
0.09984 z − 0.08173
z ^ 2 − 1.81z + 0.8187
Sampling time: 0.1
Změna vzorkovacího času u diskrétního přenosu
Pokud již máme zadaný Diskrétní přenos a chceme změnit vzorkovací čas, použijeme funkci D2D „Discret to
Descret“.
Zadání:
SYS1 = D2D (SYS, Ts)
Př:
SYS1 = TF([1 2],[1 5 6]);
SYS = C2D (SYS1, 0.1)
SYS = D2D (SYS, 0.05)
Výsledek:
Transfer function:
0.08639 z − 0.07073
z ^ 2 − 1.56 z + 0.6065
Sampling time: 0.1
Transfer function:
0.08639 z − 0.07073
z ^ 2 − 1.56 z + 0.6065
Sampling time: 0.05
Tato funkce nelze použít u vícenásobných kořenů.
Převod diskrétního přenosu na spojitý
Pokud máme zadaný nějaký Diskrétní přenos a potřebujeme z něj zjistit Spojitý přenos, použijeme funkci D2C
„Discret to Continuous system“
Matlab nám dává možnost volby několika metod přenosu:
‘zoh’
Metody:
zero-order hold - přidržení nulového řádu
‘tustin’
vícelineární Tustinova aproximace
‘prewarp’
Tustinova aproximace s frekvenční překroucením
‘matched’
metoda párování póly-nuly (pouze pro systémy SISO)
Zadání:
SYS = D2C (SYS1)
nebo
SYS = D2C (SYS1, method)
Př:
kde method je zvolená metoda
SYS1 = TF ([1 0.2],[1 0.1 0.5], 0.1)
SYS = D2C (SYS1)
Výsledek:
Transfer function:
z + 0.2
z ^ 2 + 0.1z + 0.5
Sampling time: 0.1
Transfer function:
75.45s + 2.111e004
s ^ 2 + 69.31 + 2.815e004
Specifikace diskrétního přenosu v DSP formátu
B( z ) b1 + b2 .z −1 + ... + bn +1 .z − n
=
A( z ) 1 + a 2 .z −1 + ... + a n +1 .z − n
DSP – zpracování digitálního signálu. K tomu se používá funkce FILT. Tato funkce umožňuje zadat
Diskrétní přenos v zadávání pomocí z-1 (přičemž z-1 = q).
H ( z) =
Zadání:
SYS = FILT (Bz, Az, Ts)
Př:
Bz = [1 0.5];
Az = [1 0.2 0.1];
SYS = FILT (Bz, Az, 0.1)
Výsledek:
Transfer function:
1 + 0.5 z ^ −1
1 + 0.2 z ^ −1 + 0.1z ^ −2
Sampling time: 0.1
kde
Ts… vzorkovací čas
Az…polynom jmenovatele
Bz…polynom čitatele
Zadání diskrétního přenosu pomocí funkce TF
b .z m + ... + b1 .z + b0
B( z )
= r m n
A( z ) z . a n .z + ... + a1 .z + a 0
Pro zadání Diskrétního přenosu můžeme použít funkci TF, kterou jsme již používali dříve, zde ovšem přidáme
jeden parametr navíc, kterým je vzorkovací čas Ts.
F ( z) =
(
)
Zadání:
SYS = TF(Bz, Az, Ts)
Př:
Bz = [1 0.2]
Az = [1 0.2 0.1]
SYS = TF (Bz, Az, 0.1)
Výsledek:
Transfer function:
z + 0.2
z ^ 2 + 0.2 z + 0.1
Sampling time: 0.1
Zadání diskrétního přenosu pomocí funkce SS
x[n + 1] = Ax[n] + Bu[n]
y[n] = Cx[n] + Du[n]
Pro zadání Diskrétního stavového popisu můžeme použít funkci SS, kde zadáme navíc vzorkovací čas Ts.
Zadání:
SYS = SS(A, B, C, D, Ts)
Př:
A = [0.8 –0.09; 0.09 0.99];
B = [0.09; 0.005];
C = [1 2];
D = [0];
SYS = SS(A, B, C, D, 0.1)
Výsledek:
a =
x1
x2
x1
0.8
0.09
x1
x2
u1
0.09
0.005
y1
x1
1
x2
-0.09
0.99
b =
c =
d =
y1
Sampling time: 0.1
Discrete-time model.
u1
0
x2
2
Zadání diskrétního přenosu pomocí funkce ZPK
( z − n1 ).( z − n2 ).....( z − nn )
N ( z)
= K.
P( z )
( z − p1 ).( z − p 2 ).....( z − p n )
Pro zadání Diskrétní přechodové funkce můžeme použít funkci ZPK, kde zadáme navíc vzorkovací čas Ts.
H ( z) =
Zad:
SYS = ZPK (N, P, K ,Ts)
Př:
N = [0.8];
P = [0.94; 0.94];
K = 0.1;
Ts = 0.1;
SYS = ZPK (N, P, K ,Ts)
Výsledek:
Zero/pole/gain:
0.1( z − 0.8)
( z − 0.94)^ 2
Sampling time: 0.1
Zadání náhodných hodnot
Pokud mluvíme o náhodných procesech a o šumu, který je s tímto procesem spojen, musíme nejprve
definovat tento náhodný proces (resp. šum).
V Matlabu k tomu slouží funkce randn.
Zadání:
Y = randn (m,n)
Př:
kde m,n je počet řádků (resp. sloupců) v proměnné Y
Y = randn (100,1)
Matlab vypíše matici hodnot o 100 řádcích a jednom sloupci. Pokud se chceme podívat jak tento signál vypadá, použijeme funkci PLOT (Y).
Výpočet střední hodnoty
1 N
∑ xi
N i =1
Pokud chceme spočítat střední hodnotu, použijeme funkci MEAN. Tato funkce spočítá střední hodnotu ve
všech sloupcích matice.
x=
Zadání:
STH = MEAN (Y)
Př:
Y = [5 25 12; 6 64 19; 8 54 15; 1 23 17; 2 35 15]
STH = MEAN (Y)
Výsledek:
Y =
5
6
8
1
2
STH =
4.4000
25
64
54
23
35
12
19
15
17
15
40.2000
15.6000
Směrodatná odchylka, rozptyl
(
)
1/ 2
(
)
1/ 2
2
2
 1 N
1 N
(1)
s=
xi − x i 
(2)
s =  ∑ xi − x i 
∑
 N − 1 i =1

 N i =1

Pokud chceme spočítat hodnotu rozptylu σ , použijeme funkci STD, a to buď dle vzorce (1) nebo (2).
Zadání:
S = STD (X,Flag)
Př:
kde Flag je typ 0 pro vzorec (1), typ 1 pro vzorec (2)
Y = [5 25 12; 6 64 19; 8 54 15; 1 23 17; 2 35 15];
S = STD (Y)
Výsledek:
S =
2.8810
18.1025
2.6077
Rozptyl je směrodatná odchylka na druhou, proto pro jeho výpočet použijeme pouze jednoduché vyjádření.
Př:
Rozptyl1 = S(1,1)^2
Rozptyl2 = S(1,2)^2
Rozptyl3 = S(1,3)^2
Výsledek:
V závorce je zadán první řádek a první sloupec matice
V závorce je zadán první řádek a druhý sloupec matice
V závorce je zadán první řádek a třetí sloupec matice
Rozptyl1 =
8.3000
Rozptyl2 =
327.7000
Rozptyl3 =
6.8000
Vzájemná kovariance
c xy (l ) =
[(
)
1 N −l
∑ x(k ) − x .(y (k + l ) − y
N − l k =1
]
l = 0,1,2.....N − 1 ;
τ = K.TV
V Matlabu můžeme použít pro výpočet vzájemné kovariance funkci XCOV, tento příkaz se dá použít i pro
výpočet autokovarianční funkce.
Při použití funkce XCOV má vektor X velikost Nx, a vektor Y velikost Ny (kde Nx > Ny). Potom výsledný
vektor bude mít rozměr 2*Nx – 1.
Autokovarianční funkce ukazuje pravděpodobnost toho, že stochastický signál x(k) vztažený ke střední
hodnotě, který má v t1 hodnotu x1, bude mít v t1 + τ hodnotu x1.
Zadání:
C = XCOV (X,Y, ‘coeff’)
nebo
C = XCOV (X,X, ‘coeff’)
Př:
… pro autokovarianční fci
Y = randn (30,1);
X = randn (30,1);
C = XCOV (X, Y, ‘coeff’);
Vzájemná korelace
R xy (τ ) =
1
N
N −l
∑ x(k ). y(k + l )
l = 0,1,2.....N − 1 ;
k =1
τ = K.TV
V Matlabu můžeme použít pro výpočet vzájemné korelace funkci XCORR, tento příkaz se dá použít i pro
výpočet autokorelační funkce.
Při použití funkce XCORR má vektor X velikost Nx, a vektor Y velikost Ny (kde Nx > Ny). Potom výsledný
vektor bude mít rozměr 2*Nx – 1.
Autokorelační funkce ukazuje pravděpodobnost toho, že stochastický signál x(k), který má v t1 hodnotu x1, bude
mít v t1 + τ hodnotu x1.
Zadání:
R = XCORR (X, Y, ‘coeff’)
nebo
R = XCORR (X, X, ‘coeff’)
… pro autokorelační fci
Př:
Y = randn (30,1);
X = randn (30,1);
R = XCORR (X, Y, ‘coeff’);
Dvojrozměrná vzájemná korelace
V Matlabu se použije funkce XCORR2, která vrátí křížovou korelaci matice X a Y beze změny měřítka. Tzn.
vektor X má velikost Nx, a vektor Y velikost Ny. Potom výsledný vektor bude mít rozměr Nx + Ny – 1.
XCORR2 je dvojrozměrná verze XCORR.
Zadání:
R = XCORR2 (X,Y);
nebo
R = XCORR2 (X,X);
Př:
… pro autokorelační fci
Y = randn (30,1);
X = randn (30,1);
R = XCORR2 (X, Y);
Výpočet kovarianční matice
Kovarianční matice má podobu:
2
1 N
xi − x
∑
N i =1
1 N
∑ y i − y . xi − x
N i =1
M
1 N
∑ z i − z . xi − x
N i =1
(
)
(
)(
)
(
)(
)
1
N
∑ (x
N
i =1
1
N
1
N
i
∑ (y
N
i =1
∑ (z
N
i =1
)(
− x . yi − y
i
M
i
−y
)(
)
)
2
− z . yi − y
K
K
)
O
K
(
(
)(
)(
1 N
∑ xi − x . z i − z
N i =1
1 N
∑ yi − y . z i − z
N i =1
M
1 N
∑ zi − z
N i =1
(
)
)
)
Kovarianční matice spočítá hodnoty stochastických signálů vztažených ke střední hodnotě.
K tomu slouží v Matlabu funkce COV.
Při zadávání můžeme posuzovat pouze dvě proměnné, proto pokud potřebujeme porovnat více signálů, musíme
tyto signály vložit do jedné proměnné. Funkce COV tyto signály v jedné proměnné porovná mezi sebou.
Zadání:
C = COV (X)
Matice korelačních koeficientů
Funkce CORRCOEF vrací matici korelačních koeficientů propočítaných z vstupní matice, jejíž řádky jsou
zkoumány a jejíž sloupce jsou proměnné.
Pokud C = COV(X), pak CORRCOEF (X) je matice, jejíž elementy (i,j) jsou
CORRCOEF (i, j ) =
C (i, j )
C (i, i ) ∗ C ( j , j )
Zadání se provádí:
C = CORRCOEF (X)
Výstupní a stavová kovariance systému s bílým šumem
Popis: COVAR spočítá stacionární Kovarianci výstupu y u modelu LTI SYS řízeného Gaussovým bílým
šumem vstupu w. Tato funkce pracuje zároveň se spojitým a diskrétním časem.
P = covar(sys,W) vrací ustálenou hodnotu Kovariance výstupu.
Zadání:
[P,Q] = COVAR(SYS,W)
Př:
SYS = TF([2 1],[1 0.2 0.5],0.1)
P = COVAR(SYS,5)
Výsledek:
Transfer function:
2z + 1
z ^ 2 + 0.2 z + 0.5
Sampling time: 0.1
P =
30.3167
kde … W je intenzita bílého šumu
SYS je zadaný diskrétní přenos
Diskrétní identifikace pomocí modelu ARX
ARX (AutoRegresive eXogenous) - odhaduje parametry modelu ARX nebo AR.
Parametry ARX modelu mají strukturu:
A(q ). y (t ) = B(q ).u (t − nk ) + e(t )
Při zadávání do Matlabu použijeme th = arx(z,nn), kde th (theta) vrátí hodnoty odhadu modelu ARX,
z = [y,u], kde y je výstupní vektor a u je vstupní vektor, nn = [na nb nk], kde na je stupeň polynomu A, nb je
stupeň polynomu B a nk je vždy rovno jedné.
Zadání:
Z = [Y, U]
NN = [na, nb, 1]
TH = ARX (Z, NN)
Jestliže vypočteme matici th musíme jí převést na obrazový přenos s určitým vzorkovacím časem. Pro tuto
operaci použijeme funkci th2arx („theta to arx“).
Zadání:
[A, B] = th2arx (TH)
SYS = TF (B, A, Ts)
kde T je vzorkovací čas
Diskrétní identifikace pomocí modelu ARMAX
ARMAX (AutoRegresive Moving Average eXogenous) - odhaduje parametry modelu ARMAX nebo ARMA.
Parametry ARMAX modelu mají strukturu:
A(q ). y (t ) = B(q ).u (t − nk ) + C (q ).e(t )
Při zadávání do Matlabu použijeme th = armax(z,nn), kde th (theta) vrátí hodnoty odhadu modelu
ARMAX, z = [y,u], kde y je výstupní vektor a u je vstupní vektor, nn = [na nb nc nk], kde na je stupeň
polynomu A, nb je stupeň polynomu B, nc je stupeň polynomu C a nk je vždy rovno jedné.
Zadání:
Z = [Y, U]
NN = [na, nb, nc, 1]
TH = ARMAX (Z, NN)
Jestliže vypočteme matici th musíme jí převést na obrazový přenos s určitým vzorkovacím časem. Pro tuto
operaci použijeme funkci th2arx („theta to arx“).
Zadání:
[A, B, C] = th2arx (TH)
SYS1 = TF (B, A, Ts)
SYS2 = TF (C, A, Ts)
kde T je vzorkovací čas

Podobné dokumenty

Základní pravidla MATLABu

Základní pravidla MATLABu Proměnné a matice: Každá proměnná v Matlabu je brána jako matice, přestože má rozměr 1x1. Dimenzování ani deklarování typu se u Matlabu nepoužívá, protože sám Matlab si toto dělá automaticky. Inde...

Více

Hypertextová podpora výuky v oblasti automatického řízení

Hypertextová podpora výuky v oblasti automatického řízení násobení konstantou a další elementární operace. V knihovně nelineárních bloků jsou předdefinovány paměťové bloky, přepínače, releové charakteristiky, násobení a dělení signálů, zdroje hodinových i...

Více

Příklady

Příklady Automatické řízení - Kybernetika a robotika

Více

7.1. Číslicové filtry IIR

7.1. Číslicové filtry IIR Podmínka (7.11) může být splněna pro reálný filtr pouze přibližně. Podmínka (7.12) bude splněna, pokud řád jmenovatele analogové přenosové funkce Ha (p) je alespoň o dva vyšší než řád čitatele. Popi...

Více

ř ř System interconnections (systémové vzájemné propojení)..

ř ř System interconnections (systémové vzájemné propojení).. 1.2.12 State-space models (stavové modely) rss, drss - random stable state-space models

Více

Detailní popis ve formátu pdf.

Detailní popis ve formátu pdf. Je integrální součástí konstrukce nové řady LSiM. Všechny ozvučnice LSiM mají boční steny z 1“ MDF, 0,75“ na zadní straně a 1,25“ na přední straně. Každý reproduktor navíc pracuje ve vlastní samost...

Více

ano - Hippo

ano - Hippo pL U2 (p) − U3 (p)

Více