Základní pravidla MATLABu

Transkript

Základní pravidla MATLABu
Základní pravidla 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ř.1: 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.
1
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. Index v Matlabu u matic začíná vždy od
jedničky a 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 nám 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
Otevřít Matlab
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 nám 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 nám 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ý nám podává stejné informace jako whos. Rozdíl je v tom, že
nám umožňuje jednotlivé proměnné pohodlně vymazávat, nebo si tyto proměnné otevřít
v MATLAB Editor/Debuggeru, který nám 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
2
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 nám 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 nám 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.
Otevřít Matlab
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.
Otevřít Matlab
Uložení souboru
Pro uložení souboru nám slouží funkce save ve tvarech:
1) save
2) save filename
3
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ř2:
-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řít Matlab
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ř3:
nebo
load promene –mat
load (’d:\Work\Matlab\promene.mat’)
Otevřít Matlab
4
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.
Otevřít Matlab
Simulink
Dále bych rád na tomot místě zmínil několik poznámek o převodu mezi simulinkem a wokspacem. Pokud
máme v MATLABu zadaný nějakou proměnou, můžeme ji využít také v Simulinku a to tak, že do potřebného
bloku místo konkrétních čísel zapíšeme název proměnné. Pro obrácený postup nám slouží blok „To
Workspace“. Do tohoto bloku můžeme zavést jakoukoliv výstupní veličinu. Ale pozor je potřeba v tomto bloku
nastavit v jakém formátu se bude proměnná (Variable name) ukládat (Save format), je potřeba tuto položku
nastavit jako „Matrix“ .
5
Zadávání pomocí Obrazového přenosu
Definice:
kde:
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.
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 , a0 ]
Zadání se provádí:
SYS = TF (Bs, As)
[
Př4:
]
Bs = [1, 2];
As = [1, 2, 1];
SYS = TF (Bs, As)
Výsledek:
Transfer function:
s+2
s^2 + 2s + 1
Otevřít Matlab
Pozn:
V Matlabu se zpravidla používá místo Bs - NUM a místo As - DEN. SYS je námi zvolená proměnná, v Matlabu se využívá SYS jako zkratka SYSTEM.
Proto se s ní v různých obměnách setkáme v celém Matlabu a i v souvislosti s jeho funkcemi. Při zápisu je možno používat jak malá tak velká písmena, ale
pokud již použijeme pro nějakou proměnnou malé či velké písmo, musíme ho dále využívat tak, jak jsme již začali.
Převod Obrazového přenosu na Póly, Nuly a Časovou konstantu
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í se provádí:
[N, P, K] = TF2ZP(Bs, As)
Pokud chceme vypsat pouze nuly, póly nebo zesílení, použijeme funkce: POLE, ZERO, DCGAIN
Zadání se provádí:
P = POLE (SYS)
N = ZERO (SYS)
K = DCGAIN (SYS)
Př5:
Bs = [1, 2];
As = [1, 2, 1];
[N, P, K] = TF2ZP(Bs, As)
Výsledek:
N =
-2
5
P =
-1
-1
K =
1
Otevřít Matlab
Pozn:
V Matlabu se zpravidla používá místo proměnné N proměnná Z (Zero)
Převod Obrazového přenosu 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 TF2SS "transfer function to state-space".
Zadání se provádí:
[A,B,C,D] = TF2SS (B,A)
Př6:
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
Otevřít Matlab
Obrazový přenos – 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í se provádí:
[Bs, As] = TFDATA (sys, ‘v’)
nebo
[Bs, As] = TFDATA (sys)
Pokud vynecháme ‘v’, Matlab nám vypíše pouze velikost matice.
F ( s) =
Př7:
(
)
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
6
Bs =
0
1
2
As =
1
2
1
Bs =
[1x3 double]
As =
[1x3 double]
=> matice o jednom řádku a třech sloupcích
Otevřít Matlab
Pozn.:
Pokud vynecháme ‘v’, Matlab nám vypíše pouze velikost matice. Můžeme též vypisovat pouze polynom Bs nebo As, potom zadáme pouze to, co chceme
zobrazit.
Zadávání pomocí Pólů, Nul a Časové konstanty
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í se provádí:
SYS = ZPK (N, P, K)
Př8:
N = [-2];
P = [-1; -1];
K = [1];
SYS = ZPK (N, P, K)
Výsledek:
Zero/pole/gain:
(s + 2)
(s + 1)^ 2
Otevřít Matlab
Pozn:
V Matlabu se zpravidla používá místo proměnné N proměnná Z (Zero)
Převod Nul, Pólů a Časové konstanty 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í se provádí:
[A,B,C,D] = ZP2SS (N, P, K)
Př9:
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])
7
Otevřít Matlab
Pozn:
V Matlabu se zpravidla používá místo proměnné N proměnná Z (Zero)
Převod Nul, Pólů a Časové kosntanty 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í se provádí:
[NUM, DEN] = ZP2TF (N, P, K)
Př10: N = [-2];
P = [-1; -1];
K = [1];
[NUM, DEN] = ZP2TF (N, P, K)
nebo:
[NUM, DEN] = ZP2TF ([-2], [-1; -1],[1])
Otevřít Matlab
Pozn:
V Matlabu se zpravidla používá místo proměnné N proměnná Z (Zero)
Zadávání pomocí Stavového popisu
Stavový popis je definován ve tvaru:
•
dx
= Ax + Bu
x=
dt
y = Cx + Du
Zadání se provádí:
SYS = SS (A, B, C, D)
Př11: 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
x2
-1
0
b =
8
c =
y1
x1
1
y1
u1
0
x2
2
d =
Continuous-time system.
Otevřít Matlab
Převod Stavového popisu na Nuly, Póly a Časovou konstantu
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í se provádí:
[N, P, K] = SS2ZP (A, B, C, D)
Př12: A= [-2, –1; 1, 0];
B = [1; 0];
C = [1, 2];
D = [0];
[N, P, K] = SS2ZP (A, B, C, D)
Otevřít Matlab
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í se provádí:
[NUM, DEN] = SS2TF (A, B, C, D)
Př13: 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])
Otevřít Matlab
9
Nastavení parametrů Obrazového přenosu, Stavového popisu
a nul, pólů a konstanty zesílení
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. A pomocí funkce SET tyto hodnoty měníme. V těchto funkcích je mnoho informací, ale my
můžeme využít pouze ty, které chceme.
Zadání se provádí:
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í.
10
Zadání se provádí:
set (SYS1, ‘Properties’, Value)
set (SYS2, ‘Properties’, Value)
set (SYS3, ‘Properties’, Value)
Kde Properties je hodnota, kterou chceme měnit
Př14: 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
11
Zero/pole/gain from input "u(t)" to output "y(t)":
(s + 2)
(s + 1)^ 2
Otevřít Matlab
Pozn.:
Zde je ukázáno jen velice malé množství možností nastavení. U všech tří přenosů se dají měnit veškeré položky výše uvedené. Pomocí funkce SET se dají
nastavit i konkrétní hodnoty přenosu.
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í se provádí:
TOTALDELAY (SYS)
Př15: 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
Otevřít Matlab
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í se provádí:
[Bs, As] = ORD2(wn,z)
[A,B,C,D] = ORD2(wn,z)
Př16: [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
12
A =
0
-0.1600
1.0000
-1.9200
B =
0
1
C =
1
0
D =
0
Otevřít Matlab
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í se provádí:
[R, P, K] = RESIDUE (Bs, As)
(
)
Př17: 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
Otevřít Matlab
Pozn.:
Při rozkladu se musí dát na výše uvedené skutečnosti bedlivý pozor, protože v případě opominutí již výsledek neodpovídá zadanému polynomu.
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
)
)
13
Zadání se provádí:
K = ROOTS (As)
Př18: 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)
Otevřít Matlab
Vypsání pólů a nul v komplexní rovině
Vypsání pólů a nul se dá také vyjádřit v komplexní rovině, tzn 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í se provádí:
PZMAP = (SYS)
Př19: Bs = [1, 2];
As = [1, 2, 1];
SYS = TF (Bs, As);
PZMAP(SYS)
Výsledek:
Otevřít Matlab
Pozn.:
Nuly se zobrazí jako kolečka a póly jako křížky.
14
Vypsání 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ř20: Bs = [1, 2];
As= [1, 2, 1];
SYS = TF (Bs, As);
NYQUIST (SYS)
Výsledek:
Otevřít Matlab
Pozn:
Matlab vykreslí směr frekvenční charakteristiky.
Logaritmicko amplitudová a fázová charakteristika
F (iω ) = F ( s ) s =( iω ) = F (iω ) . exp iϕ (ω )
F (iω ) dB = 20. log F (iω )
15
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í se provádí:
BODE (SYS)
Př21: Bs = [1, 2];
As= [1, 2, 1];
SYS = TF (Bs, As);
BODE (SYS)
Výsledek:
Otevřít Matlab
Pozn:
V otevřeném okně se nahoře vykreslí Logaritmicko amplitudová charakteristika a dole je Logaritmicko fázová charakteristika.
Klasická 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.
16
Zadání se provádí:
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.
Pak se zadání provádí:
STEP (SYS, T)
kde T je čas simulace
[x, t]= STEP (SYS, T)
Př22: 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
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
= -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
17
Otevřít Matlab
Pozn:
Pro fci ILAPLACE musíme bohužel zadávat výsledky jednoho z mezikroků (viz Přík). Pokud chceme pro fci STEP zadat konkrétní barvu, dáme do
apostrofů počáteční písmeno této barvy tj. r, g, b, y = red, green, blue, yelow. V případě, že tento parametr nezadáme, bude brán automaticky podle
MATLABu.
Impulzní (váhová) 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í se provádí:
ILAPLACE („Přenosová funkce“ )
IMPULSE (SYS)
[x, t]= STEP (SYS)
Numerické_Vyjádření = [x, t]
Př23: 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]
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
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
18
Otevřít Matlab
Pozn:
Pro fci ILAPLACE musíme bohužel zadávat výsledky jednoho z mezikroků (viz Př). Pokud chceme pro fci IMPULSE zadat konkrétní barvu, dáme do
apostrofů počáteční písmeno této barvy tj. r, g, b, y = red, green, blue, yelow. V případě, že tento parametr nezadáme, bude brán automaticky podle
MATLABu.
Odezva systému na libovolně zvolený 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ř24: 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 – ‘sine’; ‘square’; ‘pulse’
=> perioda = 5, celkový čas simulace = 30, vzorkovací čas je 0.1
19
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.
20
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
Otevřít Matlab
Pozn.:
Samozřejmě, že zde je ukázán pouze jedna z nekonečně mnoha možností zadávání, proto je třeba si s tímto úsekem velice dobře „pohrát“.
PŘÍKLAD
Pro celou tuto část je vytvořen soubor M-File, ve kterém je všechno naprogramováno. Proto doporučuji si tento
soubor taktéž prohlédnout.
Po otevření Matlabu zadej příkaz OPEN spojity, který ti otevře tento program v MATLAB Editor/ Debugger
Pro spuštění napiš pouze spojity a celý program se ti v Matlabu spustí.
Otevřít Matlab
21
Zobrazování více 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í se provádí:
Kde plottype jsou:
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.
Př25: 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).
Otevřít Matlab
Pozn.:
Změnit typ zobrazování lze i pomocí kliknutí na graf pravým tlačítkem myši, navolit Plot Type a vybrat si libovolné zobrazení nebo přidání mřížky, vypnutí
zobrazení jednoho z přenosů atd.
22
Způsoby zobrazování libovoných 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 tak, jak je ukázáno v příkladech 22, 23 a 24 v kombinaci
s příkazem 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í se provádí:
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ř26: 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)
23
kde ‘b‘ – je typ barvy viz. Pozn. Př1.
kde
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
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.
24
Pro příkaz SUBPLOT.
Otevřít Matlab
25
Zobrazování pomocí spektra
Pokud chceme zobrazit pouze číselné hodnoty místo spojitého obrazu, použijeme příkaz STEM.
Př27: 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).
Otevřít Matlab
26
Zobrazování 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).
Jako příklad použijeme Př6. Pouze použijeme příkaz STAIRS.
Př28: 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).
Otevřít Matlab
PŘÍKLAD
Pro celou tuto část je vytvořen soubor M-File, ve kterém je všechno naprogramováno. Proto doporučuji si tento
soubor taktéž prohlédnout.
Po otevření Matlabu zadej příkaz OPEN spojity, který ti otevře tento program v MATLAB Editor/ Debugger
Pro spuštění napiš pouze spojity a celý program se ti v Matlabu spustí.
Otevřít Matlab
27
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 nám toto (samozřejmě bez popisu):
Základní 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).
Máme 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)
28
Můžeme též definovat, jestli se jedná o kladnou nebo zápornou zpětnou vazbu, což nastavíme 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ř29: 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:
Otevřít Matlab
29
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í se provádí:
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í se provádí:
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)
30
Sériové zapojení
Zadání se provádí:
SYS = SERIES (SYS1, SYS2)
Paralelní zapojení
Zadání se provádí:
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ř30: 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
Otevřít Matlab
31
Př31:
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
Postupnou úpravou dle obrázků dostáváme:
A=
S3
1 + S 3.S 5
S12 = S1.S 2
B = S 4 + S12
C = A.B
32
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 snadnější orientaci je lepší si postupně
vyzkoušet tento příklad jak v Matlabu, tak zároveň 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 „lehce rozbíhat“. To je způsobeno zaokrouhlováním Matlabu ve výsledném přenosu J.
Otevřít Matlab
Pozn.:
Jak je již výše poukázáno, je při základním zadávání uvažována zpětná záporná vazba. Pokud tedy chceme používat kladnou zpětnou vazbu, musíme toto
zohlednit do rovnice ve formě záporného znaménka. U paralelní vazby je brán součtový člen kladný pro obě vazby, proto musíme opět zadat jedno (resp.
obě) záporná znaménka. Jsou-li v paralelní vazbě více jak dva členy, musíme je nejprve upravit, protože Matlab umí sčítat pouze dva systémy. Totéž platí
pro sériové zapojení.
33
Převod Spojitého přenosu na Diskrétní přenos
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í se provádí:
SYS = C2D (SYS1, Ts)
Ts….vzorkovací čas
SYS = C2D (SYS, Ts, method)
method - zvolená metoda
nebo
Př32: 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
Otevřít Matlab
Pozn:
Jako základní metoda je nastavena metoda ‘zoh’
Pokud máme zadaný přenos s dopravním zpoždením, můžeme použít pouze metody ‘zoh’ nebo ‘foh’.
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í se provádí:
SYS1 = D2D (SYS, Ts)
Př33: 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
Otevřít Matlab
Pozn:
Tato funkce nelze použít u vícenásobných kořenů.
34
Převod Diskrétního přenosu na Spojitý přenos
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í se provádí:
SYS = D2C (SYS1)
nebo
SYS = D2C (SYS1, method)
kde method je zvolená metoda
Př34: 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
Otevřít Matlab
Pozn:
Jako základní metoda je nastavena metoda ‘zoh’
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 tomuto se používá funkce FILT. Tato funkce nám umožňuje zadat
Diskrétní přenos v zadávání pomocí z-1 (přičemž z-1 = q).
H ( z) =
Zadání se provádí:
SYS = FILT (Bz, Az, Ts)
kde
Př35: 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
Otevřít Matlab
Pozn:
V Matlabu se zpravidla používá místo Bz - NUM a místo Az - DEN.
35
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í se provádí:
SYS = TF(Bz, Az, Ts)
Př36: 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
Otevřít Matlab
Pozn:
V Matlabu se zpravidla používá místo Bz - NUM a místo Az - DEN.
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í se provádí:
SYS = SS(A, B, C, D, Ts)
Př37: 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 =
x2
2
d =
y1
Sampling time: 0.1
Discrete-time model.
u1
0
Otevřít Matlab
36
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ání se provádí:
SYS = ZPK (N, P, K ,Ts)
Př38: 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
Otevřít Matlab
Pozn:
V Matlabu se zpravidla používá místo proměnné N proměnná Z (Zero)
PŘÍKLAD
Pro celou tuto část je vytvořen soubor M-File, ve kterém je všechno naprogramováno. Proto doporučuji si tento
soubor taktéž prohlédnout.
Po otevření Matlabu zadej příkaz OPEN diskr, který ti otevře tento program v MATLAB Editor/ Debugger
Pro spuštění napiš pouze diskr a celý program se ti v Matlabu spustí.
Otevřít Matlab
37
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
nadefinovat tento náhodný proces (resp. šum).
V Matlabu nám k tomu slouží funkce randn.
Zadání se provádí:
Y = randn (m,n)
kde m,n je počet řádků (resp. sloupců) v proměnné Y
Př39: Y = randn (100,1)
Otevřít Matlab
Pozn:
Matlab nám 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í se provádí:
STH = MEAN (Y)
Př40: 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
Otevřít Matlab
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í se provádí:
S = STD (X,Flag)
kde flag je typ 0 pro vzorec (1), typ 1 pro vzorec (2)
Př41: 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í.
38
Př41.1: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
Otevřít Matlab
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í se provádí:
C = XCOV (X,Y, ‘coeff’)
nebo
C = XCOV (X,X, ‘coeff’)
… pro autokovarianční fci
Př42: Y = randn (30,1);
X = randn (30,1);
C = XCOV (X, Y, ‘coeff’);
Otevřít Matlab
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í se provádí:
R = XCORR (X, Y, ‘coeff’)
nebo
R = XCORR (X, X, ‘coeff’)
… pro autokorelační fci
39
Př43: Y = randn (30,1);
X = randn (30,1);
R = XCORR (X, Y, ‘coeff’);
Otevřít Matlab
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í se provádí:
R = XCORR2 (X,Y);
nebo
R = XCORR2 (X,X);
… pro autokorelační fci
Př44: Y = randn (30,1);
X = randn (30,1);
R = XCORR2 (X, Y);
Otevřít Matlab
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
K
K
)(
− z . yi − y
)
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 nám spočítá hodnoty stochastických signálů vztažených ke střední hodnotě.
K tomuto nám 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 nám tyto signály v jedné proměnné porovná mezi sebou.
Zadání se provádí:
C = COV (X)
Otevřít Matlab
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
40
CORRCOEF (i, j ) =
C (i, j )
C (i, i ) ∗ C ( j , j )
Zadání se provádí:
C = CORRCOEF (X)
Otevřít Matlab
Výstupní a stavová Kovariance systému řízeného 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 fce pracuje zároveň se spojitým a diskrétním časem.
P = covar(sys,W) vrací ustálenou hodnotu Kovariance výstupu.
Zadání se provádí:
kde … W je intenzita bílého šumu
sys zadaný diskrétní přenos
[P,Q] = COVAR(SYS,W)
Př45: 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
Otevřít Matlab
PŘÍKLAD
Pro celou tuto část je vytvořen soubor M-File, ve kterém je všechno naprogramováno. Proto doporučuji si tento
soubor taktéž prohlédnout.
Po otevření Matlabu zadej příkaz OPEN NP - který ti otevře tento program v MATLAB Editor/ Debugger
Pro spuštění napiš pouze NP a celý program se ti v Matlabu spustí.
Otevřít Matlab
41
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) nám 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 pro naše případy vždy rovno jedné.
Zadání se provádí:
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í se provádí:
[A, B] = th2arx (TH)
SYS = TF (B, A, Ts)
kde T je vzorkovací čas
Otevřít Matlab
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) nám 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 pro naše případy vždy rovno jedné.
Zadání se provádí:
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í se provádí:
[A, B, C] = th2arx (TH)
SYS1 = TF (B, A, Ts)
SYS2 = TF (C, A, Ts)
kde T je vzorkovací čas
Otevřít Matlab
Příklad
Pro oba tyto příkazy je vytvořen příklad v Matlabu, pod názvem IDENT.m, který si je možno si spustit.
Otevřít Matlab
42

Podobné dokumenty

Simulace systemu

Simulace systemu 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é...

Více

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

Hypertextová podpora výuky v oblasti automatického řízení Původně Matlab vznikl jako interaktivní nadstavba pro usnadnění práce s knihovnami LINPACK a EISPACK pro práci s maticemi. Základním typem byly matice, které na rozdíl od většiny jiných systémů a j...

Více

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

ř ř System interconnections (systémové vzájemné propojení).. řídicích systémů využívají jak klasické přechodové charakteristiky, tak i popisy systémů ve stavovém prostoru. Novinkou je zavedení lineárních časově invariantních objektů (LTI), což jsou struktury...

Více

Příklady

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

Více

7.1. Číslicové filtry IIR

7.1. Číslicové filtry IIR kde T je vzorkovací perioda, y[n] = y(nT ) jsou vzorky spojité funkce v bodech t = nT . Postup náhrady derivace byl demonstrován na obrázku 1.7 v kapitole 1.3.2, ve které byla také odvozena transfo...

Více

MATLAB ver. 5

MATLAB ver. 5 Adresace podpole pole A definovaná vektorem řádkových indexů r a vektorem sloupcových indexů c. Adresace podpole pole A definovaná vektorem řádkových indexů r a všemi sloupci. Adresace podpole pole...

Více

Detailní popis ve formátu pdf.

Detailní popis ve formátu pdf. Technologie a komponenty Dynamic Sonic Engine (středovýšková sekce)

Více