B
Jemn´ yu ´vod do Matlabu a Simulinku
ˇ asteˇcnˇe splnˇen´e poˇzadavky na z´apoˇcet za 29932 sekund C´
B. Kov´aˇr, J. Pˇrikryl, M. Pˇeniˇcka, M. Vlˇcek, L. Hodn´y
´ c 1998 − 2007 Ustav ° aplikovan´e matematiky ˇ FD CVUT
Obsah ´ 1 Uvod
3
2 Matlab 2.1 Pˇrednosti Matlabu . . . . . . . . . . . . . . . . . 2.2 Pˇr´ıkazy a promˇenn´e . . . . . . . . . . . . . . . . . ˇ ısla a aritmetick´e v´ 2.3 C´ yrazy . . . . . . . . . . . . . 2.4 Manipulace s maticemi a vektory . . . . . . . . . 2.4.1 Generov´an´ı vektoru . . . . . . . . . . . . . 2.4.2 Generov´an´ı tabulky . . . . . . . . . . . . . ˇ ı a z´apis prvku vektoru na dan´e pozici 2.4.3 Cten´ 2.4.4 Generov´an´ı matice . . . . . . . . . . . . . 2.4.5 Komplexn´ı ˇc´ısla a matice . . . . . . . . . . 2.4.6 Operace s maticemi . . . . . . . . . . . . . 2.5 Operace s poli . . . . . . . . . . . . . . . . . . . . 2.6 Relace . . . . . . . . . . . . . . . . . . . . . . . . 2.7 Logick´e operace . . . . . . . . . . . . . . . . . . . ˇ ezce . . . . . . . . . . . . . . . . . . . . . . . 2.8 Retˇ 2.9 Informace o promˇenn´ ych . . . . . . . . . . . . . . 2.10 Help . . . . . . . . . . . . . . . . . . . . . . . . . 2.11 Funkce v Matlabu . . . . . . . . . . . . . . . . . . 2.12 Grafick´e funkce . . . . . . . . . . . . . . . . . . . 2.13 M-soubory (M-files) . . . . . . . . . . . . . . . . . 2.13.1 Script soubory . . . . . . . . . . . . . . . . 2.13.2 M-funkce . . . . . . . . . . . . . . . . . . 2.13.3 Mex-funkce . . . . . . . . . . . . . . . . . 2.14 Programov´an´ı M-soubor˚ u . . . . . . . . . . . . . ˇ 2.15 Koeficienty Cebyˇsevov´ ych polynom˚ u . . . . . . . 2.16 Jednoduch´ y dynamick´ y model Nab´ıdka-Popt´avka
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
3 3 3 4 4 4 4 5 5 7 7 7 8 9 9 9 10 10 11 12 12 12 13 13 15 16
3 Simulink ´ 3.1 Uvod do Simulinku . . . . . . . . . . . . 3.1.1 Spuˇstˇen´ı Simulinku . . . . . . . . 3.1.2 Jednoduch´e pˇr´ıklady . . . . . . . 3.1.3 Kruˇznice . . . . . . . . . . . . . . 3.1.4 Parametry simulace . . . . . . . . 3.1.5 Nab´ıdka-popt´avka . . . . . . . . . 3.1.6 Fakulta . . . . . . . . . . . . . . 3.2 Modelov´an´ı v Simulinku . . . . . . . . . 3.2.1 Integr´ator a jednotkov´e zpoˇzdˇen´ı 3.2.2 Diferenci´aln´ı rovnice . . . . . . . 3.2.3 Diferenˇcn´ı rovnice . . . . . . . . . 3.2.4 Vnitˇrn´ı popis syst´emu . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
17 17 17 19 19 19 20 20 20 20 21 22 22
2
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
1
´ Uvod
V tomto textu jsou shrnuty z´akladn´ı operace, funkce a principy pr´ace v Matlabu a Simulinku, tak jak jsou vyˇzadov´any na cviˇcen´ıch pˇredmˇetu Modelov´an´ı syst´em˚ u a proces˚ u, pˇredn´aˇsen´eho v letn´ım semestru tˇret´ıho roˇcn´ıku. Pochopen´ı uk´azkov´ ych pˇr´ıklad˚ u a samostatn´e zvl´adnut´ı neˇreˇsen´ ych pak stanovuje poˇzadovanou m´ıru znalost´ı nutn´ ych pro splnˇen´ı praktick´e ˇca´sti z´apoˇctu. Ned´ılnou souˇc´ast´ı textu jsou odkazy na doporuˇcen´a skripta [1].
2
Matlab
Matlab je programov´ y syst´em spoleˇcnosti The MathWorks, Inc. N´azev souboru je zkratka ”MATrix LABoratory” a v´ ystiˇznˇe charakterizuje zp˚ usob pr´ace s programem. P˚ uvodnˇe Matlab slouˇzil jako interface na metody numerick´ ych knihoven LINPACK a EISPACK. Pozdˇeji se stal komerˇcn´ım produktem a pro svou jednoduchost se stal pr˚ umyslov´ ym standardem v oblasti softwarov´ ych ˇreˇsen´ı automatick´eho ˇr´ızen´ı (CADCS).
2.1
Pˇ rednosti Matlabu
T´ım, ˇze se Matlab stal svˇetov´ ym standardem v mnoha inˇzen´ yrsk´ ych oborech, je rozˇs´ıˇren po cel´em svˇete a existuje pro vˇsechny operaˇcn´ı syst´emy (Unix, Linux, Solaris, Windows, Mac OS). Matlab je moˇzno relativnˇe pohodlnˇe rozˇsiˇrovat o dalˇs´ı funkce a na Internetu je moˇzn´e z´ıskat nˇekolik des´ıtek toolbox˚ u. S programem je moˇzn´e zaˇc´ıt pracovat i bez speci´aln´ıch znalost´ı programov´an´ı (nicm´enˇe, element´arn´ı znalosti programov´an´ı jsou v´ yhodou). V syst´emu Matlab jsou zabudov´any robustn´ı numerick´e metody. Matlab je moˇzn´e d´ale rozˇsiˇrovat o extern´ı programy (MEX-soubory) naprogramovan´e v C/C++ nebo Fortranu.
2.2
Pˇ r´ıkazy a promˇ enn´ e
Pˇr´ıkazy jsou v Matlabu ve tvaru promˇenn´ a = v´yraz. V´ yrazy se skl´adaj´ı z oper´ator˚ u, speci´aln´ıch znak˚ u, funkc´ı a promˇenn´ ych. Pokud chyb´ı pˇriˇrazen´ı promˇenn´e, zavede se syst´emov´a promˇenn´a ans. Um´ıstˇen´ım stˇredn´ıku za v´ yrazem potlaˇc´ıme v´ ystup na obrazovku. Mezery uvnitˇr v´ yrazu jsou nepodstatn´e. V´ ysledkem je obecnˇe matice, kter´a se zobrazi na obrazovce. Jm´ena promˇenn´ ych a funkc´ı mus´ı zaˇc´ınat p´ısmenem. Matlab rozliˇ suje mal´ a a velk´ a p´ısmena ve jm´enech promˇenn´ ych, funkc´ı a konstant. Pˇr´ıklad: >> 1320 / 63 >> ans = 20.9524 >> a = 1 + 1; >> a = a + 1 >> a = 3
3
2.3
ˇ ısla a aritmetick´ C´ e v´ yrazy
Matlab prov´ad´ı vˇsechny v´ ypoˇcty v dvojit´e pˇresnosti (pokud nen´ı definov´ano jinak). Priorita operac´ı je stejn´a jako v matematice. Okolo symbol˚ u e,E nesm´ı b´ yt mezera (napˇr. 3.14159, 6.6345e23, 9.12E-20). V Matlabu je moˇzn´e pouˇz´ıvat n´asleduj´ıc´ı oper´atory: + sˇc´ıt´an´ı, - odˇc´ıt´an´ı, * n´asoben´ı, / prav´e dˇelen´ı, \ lev´e dˇelen´ı, ∧ umocˇ nov´an´ı () z´avorky upravuj´ı poˇrad´ı prov´adˇen´ı operac´ı.
2.4 2.4.1
Manipulace s maticemi a vektory Generov´ an´ı vektoru
Vektor v Matlabu zad´av´ame v´ yˇctem prvk˚ u nebo definic´ı prvku vektoru na dan´e pozici (kapitola 2.4.3). Pro generov´an´ı vektoru lze tak´e pouˇz´ıt notaci s dvojteˇckou. Syntaxe je: vektor = od :
: do. Tento zp˚ usob je vhodn´ y pro z´apis aritmetick´ ych posloupnost´ı. Transpozici vektoru provedeme takto: u = u’. Pˇr´ıklad: >> u = [1 2 3 4 5] % v´ yc ˇet prvk˚ u >> x = 1:5 % notace s dvojteˇ ckou >> x = 1 2 3 4 5 >> y = 0:pi/4:pi >> y = 0.0000 0.7854 1.5708 2.3562 3.1416 Cviˇ cen´ı 1: 1. Definujte vektor ~a, kter´ y obsahuje prvky 3, 4, 5, 6, 7, 8. 2. Definujte vektor ~a, kter´ y obsahuje prvky 8, 7, 6, 5, 4, 3. 3. Definujte vektor ~a, kter´ y obsahuje pouze sud´a ˇc´ısla od 1 do 20. 2.4.2
Generov´ an´ı tabulky
Pˇr´ıklad: >> >> >> >>
x = [0.0:0.1:0.5]’; y = exp(-x).*cos(x); [x y] ans = 0 1.0000 4
0.1000 0.2000 0.3000 0.4000 0.5000
0.9003 0.8024 0.7077 0.6174 0.5323
Cviˇ cen´ı 2: 1. Nadefinujte vektory ~u, ~v , w ~ stejn´e d´elky a vytvoˇrte z nich tabulku, kde v prvn´ım sloupci bude vektor ~u, ve druh´em ,~v , a ve tˇret´ım w. ~ 2. Vytvoˇrte tabulku, goniometrick´ ych funkc´ı od −2π do 2π. 2.4.3
ˇ Cten´ ı a z´ apis prvku vektoru na dan´ e pozici
K prvk˚ um vektoru v Matlabu pˇristupujeme pomoc´ı index˚ u, podobnˇe jako v jin´ ych programovac´ıch jazyc´ıch. Na vektor se m˚ uˇzeme d´ıvat jako na alokovan´e pole, kter´e m´a na rozd´ıl od jin´ ych programovac´ıch jazyk˚ u prvn´ı index roven 1 a ne 0. Vektor m˚ uˇzeme tedy deklarovat i t´ım, ˇze definujeme prvky na jednotliv´ ych pozic´ıch. Pˇr´ıklad: >> a(1) = 1; a(3) = 5; a(7) = 3; >> a >> ans = 1 0 5 0 3 ˇ ı hodnoty vektoru na dan´e pozici provedeme obdobnˇe pˇriˇrazen´ım. Cten´ Pˇr´ıklad: >> u = [1 3 5 7]; >> x = u(2) x = 3 2.4.4
Generov´ an´ı matice
Matice v Matlabu vytv´aˇr´ıme obdobnˇe jako vektory. V´ yˇctem prvk˚ u, pˇr´ıpadnˇe z´apisem hodnoty prvku na danou pozici. Hodnoty matice ˇcteme opˇet obdobnˇe jako u vektor˚ u. Prvn´ı index je ˇr´adkov´ y, druh´ y index sloupcov´ y. 1. Odkaz na konkr´etn´ı prvek matice >> a(3,3) = a(1,3) + a(3,1); 2. Definice matice (5,1), kter´a se skl´ad´a z prvk˚ u A(1,3), A(2,3), . . . , A(5,3) >> A(1:5,3); 3. Definice matice (5,4), kter´a se skl´ad´a z prvn´ıch pˇeti ˇrad a sloupc˚ u 7 aˇz 10 matice A 5
>> A(1:5,7:10); 4. Vˇsechny prvky 3. sloupce matice A >> A(:,3); 5. Nahrazen´ı 2., 4. a 7. sloupce matice A prvn´ımi tˇremi sloupci matice B >> A = [1 2 3 4 5 6 7 8 9; ... 1 2 3 4 5 6 7 8 9; ... 1 2 3 4 5 6 7 8 9]; >> B = [0 0 0 13 13; ... 0 0 0 13 13; ... 0 0 0 13 13]; >> A(:,[2 4 7]) = B(:,1:3) >> A = 1 0 3 0 5 6 0 8 9 1 0 3 0 5 6 0 8 9 1 0 3 0 5 6 0 8 9 6. Prohozen´ı sloupc˚ u matice A >> A = A(:,9:-1:1); >> A = 9 8 0 6 5 0 3 0 1 9 8 0 6 5 0 3 0 1 9 8 0 6 5 0 3 0 1 7. Pˇrevod matice na vektor >> A = [1 2; 3 4; 5 6]; >> B = A(:)’ >> B = 1 3 5 2 4 6 8. Pr´azdn´a matice. Pr´azdn´a matice x=[] m´a nulov´ y rozmˇer. Vymaz´an´ı 1. a 3. sloupce matice A se tedy provede >> A(:,[1 3]) = []; Cviˇ cen´ı 3: 1. Je d´an vektor ~u = {9 11 13 · · · 97}T . Jak tento vektor nejefektivnˇeji zad´ate. 2. Zadejte matici A, s dimenz´ı 8 × 7, kter´a m´a vˇsechny prvky nulov´e, pouze prvky [1, 4] a [4, 6] jsou rovny 1. 3. Zadejte libovolnou matici A. Jak vytvoˇr´ıte vektor ~u, kter´ y bude obsahovat vˇsechny prvky druh´eho sloupce matice A. 4. Zadejte libovoln´e matici A a B se stejnou dimenz´ı. V matici A nahrad’te prvn´ı sloupec, posledn´ım sloupcem matice B.
6
2.4.5
Komplexn´ı ˇ c´ısla a matice
Komplexn´ı ˇc´ısla jsou povolena ve vˇsech operac´ıch a funkc´ıch Matlabu. Pokud i nebo j pouˇz´ıv´ame jako promˇenn´e, je tˇreba nadefinovat jinou imagin´arn´ı jednotku, napˇr. >> ii = sqrt(-1); >> z = 2 + 3*ii; Z´apis matice s komplexn´ımi prvky se tedy prov´ad´ı: >> A = [1 2;3 4] + i*[-5 6; 7 -8]; >> A = [1-5*i 2+6*i; 3+7*i 4-8*i]; 2.4.6
Operace s maticemi
Z´apis matic je obdobn´ y jako v matematice. Z´akladn´ı operace s maticemi jsou: 1. Transpozice B = A’ >> A = [1 2;3 4] >> A = 1 2 3 4 >> B = A’ >> B = 1 3 2 4 2. Souˇcet a rozd´ıl. Matice mus´ı m´ıt stejn´ y rozmˇer (m, n) + (m, n) = (m, n) >> C = A + B; >> C = A - B; 3. Souˇcin. Matice mus´ı m´ıt pˇr´ısluˇsn´ y rozmˇer (m, n)∗(n, k) = (m, k). Jedn´a se o vektorov´ y souˇcin, jehoˇz v´ ysledkem je skal´ar. >> C = A * B; 4. Pod´ıl. V Matlabu rozliˇsujeme prav´e dˇelen´ı C = A/B, kter´e je definov´ano A*inv(B) a lev´e dˇelen´ı C = A\B, definoven´e inv(A)*B. Prav´e dˇelen´ı je tak´e moˇzn´e definovat jako B/A = (A’\B’)’. 5. Umocˇ nov´an´ı C = A∧ p, resp. C = p∧ A je definov´ano, pokud A je ˇctvercov´a matice a p skal´ar.
2.5
Operace s poli
Tyto operace odpov´ıdaj´ı operac´ım ”prvku s prvkem”. Operace jsou stejn´e jako s maticemi. Jedn´a se o tyto oper´atory: .’ .* .\ ./ .∧
7
Pˇr´ıklad: >> x = [1 2 3], y = [4 5 6]; >> z = x .\ y >> z = 4.0000 2.5000 2.0000 >> z = x .^ y >> z = 1 32 729 Cviˇ cen´ı 4: 1. Zadejte matici A a B. Jak provedete vektorov´ y souˇcin? Jak´e mus´ı b´ yt dimenze matice A a B? 2. Od vˇsech prvk˚ u matice A odeˇctˇete konstantu 3. 3. Je d´an vektor ~u = {1 3 5 7} a vektor ~v = {2 4 6 8}T . Jak vypoˇctete souˇcin vektoru ~u a vektoru ~v . Jak by souˇcin vypadal v pˇr´ıpadˇe operace ”prvek s prvkem”.
2.6
Relace
Relace je moˇzn´e prov´adˇet mezi maticemi stejn´ ych rozmˇer˚ u. Porovn´an´ı je prov´adˇeno mezi odpov´ıdaj´ıc´ımi si prvky. V´ ysledkem je matice sam´ ych 0 a 1. Hodnota 1 odpov´ıd´a pravdiv´e relaci, hodnota 0 nepravdiv´e. Relaˇcn´ı oper´atory jsou: < menˇs´ı neˇz, <= menˇs´ı nebo rovno, > vˇetˇs´ı neˇz, >= vˇetˇs´ı nebo rovno, == rovno, ∼= nerovno, Pˇr´ıklad: >> x = [1 4 8], y = [-4 5 0]; >> x < y >> ans = 0 1 0 Cviˇ cen´ı 5: 1. Je d´ana matice A=[1 2 3; 4 5 6; 1 2 3]. Jak zjist´ıte, zda jsou hodnoty prvk˚ uv prvn´ım ˇra´dku matice A menˇs´ı neˇz hodnoty prvk˚ u ve tˇret´ım sloupci matice A. Zapiˇste v´ ysledek t´eto operace. 2. Je d´an vektor ~u = {1 2 3}. V´ ysledkem operace ~u 6= ~v je vektor {1 0 1} . Jak zad´ate libovoln´ y vektor ~v , kter´ y odpov´ıd´a zadan´e operaci. 3. Je d´an vektor ~u = {2 2 3} a vektor ~v = {1 2 1}. Napiˇste relaˇcn´ı oper´ator, pomoc´ı kter´eho zjist´ıte, zda je vektor ~u roven vektoru ~v . Zapiˇste v´ ysledek t´eto operace.
8
2.7
Logick´ e operace
Logick´e operace lze prov´adˇet mezi maticemi stejn´ ych rozmˇer˚ u. Logick´e operace jsou prov´adˇeny mezi prvky matic, kter´e jsou obvykle 0 nebo 1. Logick´e oper´atory jsou: & konjunkce (AND), | disjunkce (OR), ∼ negace (NOT), V Matlabu jsou zabudov´any jeˇstˇe dalˇs´ı relaˇcn´ı a logick´e funkce, napˇr. any, all.
2.8
ˇ ezce Retˇ
ˇ ezce jsou uzavˇreny v apostrofech a ukl´ad´any jako vektory. Retˇ Pˇr´ıklad: >> x = ’modelovani’ >> x = modelovani >> x = [x, ’ systemu a procesu’] >> x = modelovani systemu a procesu >> size(x) >> ans = 1 27
2.9
Informace o promˇ enn´ ych
Informace o promˇenn´ ych a alokovan´e pamˇeti ud´avaj´ı funkce who a whos. Alokovan´e promˇenn´e je moˇzn´e uloˇzit do souboru a pozdˇeji naˇc´ıst k dalˇs´ımu zpracov´an´ı pomoc´ı funkc´ı save a load. Vymaz´an´ı promˇenn´e prov´ad´ı pˇr´ıkaz clear. Pˇr´ıklad: >> x = [1 2 3; 4 5 6; 7 8 9] >> x = 1 2 3 4 5 6 7 8 9 >> save moje_matice.mat x; >> clear; >> load moje_matice.mat; >> x >> x = 1 2 3 4 5 6 7 8 9 9
2.10
Help
ˇ Matlab obsahuje velmi kvalitn´ı n´apovˇedu v HTML a PDF. Casto je mnohem efektivnˇejˇs´ı pouˇz´ıt zabudovan´ y help, kter´ y poskytuje dostatek informac´ı o vˇsech objektech Matlabu.
Pˇr´ıklad: >> help plot
2.11
Funkce v Matlabu
Matlab m´a v souˇcasn´e dobˇe nˇekolik stovek intern´ıch funkc´ı. Mezi ty nejd˚ uleˇzitˇejˇs´ı (a na cviˇcen´ıch nejpouˇz´ıvanˇejˇs´ı) patˇr´ı: Obecn´ e funkce help who size length ∧ C chdir save load clear
on-line n´apovˇeda seznam promˇenn´ ych dimenze matice d´elka vektoru ukonˇcen´ı v´ ypoˇctu zmˇena adres´aˇre uloˇzen´ı promˇenn´e do souboru naˇcten´ı promˇenn´e ze souboru de-alokace promˇenn´ ych
Matematick´ e funkce Goniometrick´e a ostatn´ı matematick´e funkce jsou definov´any stejnˇe jako v matematice (napˇr. sin, cos, sqrt, exp). Ostatn´ı funkce clc echo plot ones(m,n) zeros(m,n) rand(m,n) roots
vymaˇze obrazovku zobraz´ı koment´aˇr grafick´ y v´ ystup jednotkov´a matice (m,n) nulov´a matice (m,n) matice (m,n) n´ahodn´ ych ˇc´ısel v´ ypoˇcet vlastn´ıch ˇc´ısel
Funkce jsou bud’ vnitˇrn´ı, nebo se jedn´a o tzv. M-funkce, kter´e jsou uloˇzeny na disku. Uˇzivatel m˚ uˇze vytv´aˇret vlastn´ı M-funkce (pomoc´ı pˇr´ıkaz˚ u Matlabu, nebo pomoc´ı mexfunkc´ı naprogramovan´ ych jazykem C) a t´ım rozˇsiˇrovat funkˇcnost Matlabu. Funkce mohou m´ıt v´ıce vstupn´ıch a v´ ystupn´ıch parametr˚ u. Pˇr´ıklad z´apisu funkce s jedn´ım v´ ystupn´ım parametrem je y=sin(x). Funkce vˇsak m˚ uˇze vracet i v´ıce parametr˚ u (napˇr. [m,n]=size(X)).
10
2.12
Grafick´ e funkce
Visualizace dat je silnou str´ankou Matlabu. Z´akladn´ı operace s grafy jsou velmi jednoduch´e a snadno zapamatovateln´e. Pokroˇcilejˇs´ı pr´ace s grafy, jejich nastaven´ı a export do r˚ uzn´ ych grafick´ ych form´at˚ u je moˇzn´e nal´ezt v n´apovˇedˇe. Z´akladn´ı pˇr´ıkaz pro tvorbu graf˚ u je plot. Tento pˇr´ıkaz vykresl´ı ˇca´rov´ y graf, kter´ y spojuje body se souˇradnicemi [x, y]. Souˇradnice jsou definov´any vektory x a y. Pˇr´ıklad: >> t = pi*(0:0.02:2); >> plot(t,sin(t)) O tom, ˇze se jedn´a skuteˇcnˇe o ˇc´arou spojen´e body se m˚ uˇzete pˇresvˇedˇcit pˇr´ıkazem >> plot(t,sin(t),’o-’) Pokud nyn´ı nech´ame vykreslit ˇcervenou barvou funkci cos(t), >> plot(t,cos(t),’r’) pˇredchoz´ı kˇrivka bude vymaz´ana. Pro pˇrid´an´ı kˇrivky do jiˇz existuj´ıc´ıho grafu pouˇzijeme pˇr´ıkaz hold. Pˇr´ıklad: >> plot(t,sin(t),’b’) >> hold on >> plot(t,cos(t),’r’) Mezi dalˇs´ı uˇziteˇcn´e pˇr´ıkazy pro pr´aci s grafy patˇr´ı napˇr´ıklad: Pˇr´ıkaz figure subplot semilogx, semilogy, loglog legend print
Funkce otevˇre nov´e grafick´e okno v´ıce graf˚ u v jednom grafick´em oknˇe logaritmick´e mˇeˇr´ıtko osy x a y legenda pro grafy s v´ıce funkcemi tisk na tisk´arnˇe
Tabulka 1: Dalˇs´ı funkce pro tvorbu graf˚ u
Pˇr´ıklad: >> >> >> >> >>
t = 2*pi*(0:0.01:1); plot(t,sin(t)) xlabel(’t’) ylabel(’amplituda’) title(’Jednoduch´ y harmonick´ y oscil´ ator’)
Obdobnˇe jako vykreslujeme grafy funkc´ı y = f (x) (2D grafy), m˚ uˇzeme v Matlabu tvoˇrit grafy funkc´ı y = f (x, y) (3D grafy). 11
Pˇr´ıklad: >> >> >> >>
x = pi*(0:0.02:1); y = 2*x; [X,Y] = meshgrid(x,y); surf(X,Y,sin(X.2+Y))
Grafick´e v´ ystupy Matlabu m˚ uˇzeme nejen zobrazovat na obrazovce, tisknout na tisk´arnˇe, ale i ukl´adat do soubor˚ u pro dalˇs´ı pouˇzit´ı v jin´ ych (napˇr. publikaˇcn´ıch) programech. Graf, jako obr´azek, uloˇz´ıme pˇr´ıkazem saveas(figure,jmeno). Podporov´any jsou tyto grafick´e form´aty – bitmapov´e GIF, JPEG, PNG, TIFF, BMP a vektorov´e EPS a WMF. Obr´azek je ukl´ad´an do pr´avˇe pouˇz´ıvan´eho adres´aˇre. Pˇr´ıklad: >> >> >> >>
figure(1) t = pi*(0:0.02:2); plot(t,sin(t)) saveas(1,’sinus.bmp’);
2.13
M-soubory (M-files)
Pˇr´ıkazy Matlabu jsou prov´adˇeny bud’ ihned (v command window) nebo mohou b´ yt uloˇzeny do m-souboru, do textov´eho souboru s pˇr´ıponou .m, a prov´adˇeny sekvenˇcnˇe. Pˇr´ıkazy m-souboru se mohou odkazovat na jin´e m-soubory, pˇr´ıpadnˇe rekurzivnˇe volat sami sebe. M-soubory jsou typu script nebo m-funkce. 2.13.1
Script soubory
Scriptov´e soubory jsou sekvencemi pˇr´ıkaz˚ u ve kter´ ych jsou vˇsechny promˇenn´e glob´aln´ı. Pˇr´ıklad: x = [-pi:0.1:pi]’; y = sin(x); plot(y) 2.13.2
M-funkce
M-funkce rozˇsiˇruj´ı moˇznosti Matlabu, protoˇze umoˇzn ˇuj´ı definovat nov´e funkce. Promˇenn´e jsou uvnitˇr funkce lok´aln´ı a s prostˇred´ım Matlabu komunikuj´ı pomoc´ı vstupn´ıch a v´ ystupn´ıch parametr˚ u. Nov´a funkce se definuje pˇr´ıkazem function a seznamem vstupn´ıch a v´ ystupn´ıch parametr˚ u (bez tohoto pˇr´ıkazu by se jednalo o script soubor).
12
Pˇr´ıklad: function y=prumer(x) % vstupni parametr vektor x % vystupni parametr aritmeticky prumer % pouziti y=prumer(x) y=0; soucet=0; for i=1:length(x) soucet=soucet+x(i); end y=soucet/length(x); 2.13.3
Mex-funkce
Z Matlabu lze volat i extern´ı funkce napsan´e v jazyc´ıch C nebo Fortran. Funkce naprogramovan´a v jazyce C se skl´ad´a ze dvou ˇca´st´ı. Prvn´ı, tzv. gateway interface, zajiˇstuje komunikaci s Matlabem a je obdobou main() funkce v jazyce C. Druh´a ˇca´st je vlastn´ı k´od. V´ yhodou mex funkc´ı je jejich mnohon´asobnˇe vyˇsˇs´ı rychlost oproti m-funkc´ım.
2.14
Programov´ an´ı M-soubor˚ u
Pˇri programov´an´ı m-soubor˚ u je ˇcasto poˇzadov´ano opakovan´e prov´adˇen´ı skupiny pˇr´ıkaz˚ u. V pˇr´ıpadˇe, ˇze je poˇcet opakov´an´ı d´an, je vhodn´e pouˇz´ıt pˇr´ıkaz for. for <parametr>= <prikazy> end Pˇr´ıkazy cyklu se mohou vkladat do sebe, kaˇzd´ y pˇr´ıkaz for je ukonˇcen pˇr´ıkazem end. Pˇr´ıklad: for i=1:m for j=1:n x(i,j)=0; y(i,j)=0; end end V pˇr´ıpadˇe, ˇze poˇcet opakov´an´ı nen´ı pˇredem d´an, je moˇzn´e pouˇz´ıt pˇr´ıkaz while. Skupina pˇr´ıkaz˚ u je prov´adˇena tolikr´at, dokud je splnˇena logick´a podm´ınka. while <podminka> <prikazy> end
13
Pˇr´ıklad: n=1; while prod(1:n) < 1000 n=n+1; end; Pˇr´ıkaz if umoˇzn ˇuje vˇetven´ı programu podle logick´e podm´ınky. if <podminka> <prikaz> elseif <podminka> <prikaz> ... else <prikaz> end Pˇr´ıklad: j=a; for i=1:n if X(i,j)>0 m=m+1; elseif X(i,j)<0 m=m-1; else break; end end Pˇr´ıkaz break umoˇzn ˇuje pˇreruˇsit prov´adˇen´ı for nebo while cykl˚ u. Pˇr´ıkaz return pˇred´a ˇr´ızen´ı volaj´ıc´ı funkci, pˇr´ıpadnˇe umoˇzn´ı n´avrat do command window. Pˇr´ıkaz input umoˇzn ˇuje vstup dat z obrazovky. <promenna> = input(’’[,’s’]) Pˇr´ıklad: jmeno=input(’Vase jmeno:’,’s’); rok=input(’Rok narozeni:’); Pˇr´ıkaz eval interpretuje znakov´ y ˇretˇezec.
14
Pˇr´ıklad: string=’clc,clear,a=[1 2;3 4],... b=[0 0; 1 0], c=a*b’ eval string a = 1 2 3 4 b = 0 0 1 0 c = 2 0 4 0
2.15
ˇ Koeficienty Cebyˇ sevov´ ych polynom˚ u
ˇ Cebyˇ sevovy polynomy mohou b´ yt odvozeny takto: Necht’ x = cos(ϕ), |x| ≤ 1 a pˇredpokl´adejme, ˇze existuj´ı polynomy Tk (x) = cos(kϕ), cos(ϕ) = ˇ sen´ım diferenci´aln´ı rovnice, pro |x| ≤ 1, x. Reˇ (1 − x2 )y 00 − xy 0 + n2 y = 0, y = Tn (x), n ≥ 0
(1)
dostaneme tyto polynomy: T0 (x) T1 (x) T2 (x) T3 (x) T4 (x) T5 (x)
= = = = = =
1, x, 2x2 − 1, 4x3 − 3x, 8x4 − 8x2 + 1, 16x5 − 20x3 + 5x . . . ,
(2)
Tyto polynomy splˇ nuj´ı rekurentn´ı rovnici T0 (x) = 1, T1 (x) = x, Tk+1 (x) = 2xTk (x) − Tk−1 (x), k = 1, . . . , n,
Model v Matlabu function F=T(n) % ************************************* % * Koeficienty Cebysevovych polynomu * % * * % ************************************* pocitadlo = 1; 15
(3)
arg = [1 0]; a = [1]; b = [1 0]; shift = [0 0 1]; if n == 0 F = a; elseif n == 1 F = b; else while pocitadlo < n c = conv(2*arg,b) - conv(shift,a); a = b; b = c; pocitadlo = pocitadlo + 1; end F = c; end
2.16
Jednoduch´ y dynamick´ y model Nab´ıdka-Popt´ avka
Vyjdˇeme z ekonomick´eho modelu, kdy nab´ıdka v n-t´em ˇcasov´em intervalu s(n) je pˇr´ımo u ´mˇern´a cenˇe produktu v minul´em ˇcasov´em intervalu p(n−1) a naopak popt´avka v n-t´em ˇcasov´em intervalu dem(n) kles´a se souˇcasnou cenou produktu p(n), to znamen´a, ˇze je u ´mˇern´a −dp(n). Zavedeme-li promˇennou u(n), kter´a charakterizuje poˇcet vyroben´ ych kus˚ u v ˇcase n, m˚ uˇzeme syst´em popsat soustavou tˇr´ı diferenˇcn´ıch rovnic. s(n) = c · p(n − 1) + a · u(n), dem(n) = −d · p(n) + b · u(n), s(n) = p(n).
(4)
Pro obecnˇe zvolen´e parametry a, b, c, d a u(n) = 1(n) m˚ uˇzeme v Matlabu vytvoˇrit n´asleduj´ıc´ı model. Model v Matlabu % ******************************** % * Nab´ ıdka a popt´ avka * % * (jednoduch´ y dynamick´ y model) * % ******************************** clear a = 100; b = 120; c = 3; d = 4; N = 50; % vstupn´ ı posloupnost u = ones(1,N); 16
p(1) = (b-a)/d; % rovnice pro cenu p(n) for k = 2:N p(k) = -c/d*p(k-1)+(b-a)/d*u(k); end figure(1) subplot(3,1,1), stem(p) % nab´ ıdka s(n) for m = 1:N s(m) = c*p(m) + a*u(m); end subplot(3,1,2), plot(p,s,’*’) % popt´ avka dem(n) for m = 1:N dem(m) = -d*p(m) + b*u(m); end subplot(3,1,3), plot(p,dem,’o’,p,s,’*’)
3
Simulink
Simulink, souˇc´ast Matlabu, je n´astroj pro modelov´an´ı a analyzov´an´ı dynamick´ ych syst´em˚ u. Podporov´any jsou line´arn´ı i neline´arn´ı syst´emy, spojit´e i diskr´etn´ı modely, pˇr´ıpadnˇe jejich kombinace.
3.1
´ Uvod do Simulinku
Modelov´an´ı prob´ıh´a v grafick´em uˇzivatelsk´em prostˇred´ı (GUI) pˇrev´aˇznˇe pomoc´ı myˇsi. Model se skl´ad´a z blokov´ ych diagram˚ u, kter´e v tomto prostˇred´ı vytv´aˇr´ıme obdobnˇe, jako bychom je kreslili tuˇzkou na pap´ır. Souˇc´ast´ı Simulinku je obs´ahl´a knihovna r˚ uzn´ ych vstup˚ u, v´ ystup˚ u, line´arn´ıch a neline´arn´ıch komponent a konektor˚ u umoˇzn ˇuj´ıc´ıch spojovat jednotliv´e bloky. Stejnˇe jako v pˇr´ıpadˇe Matlabu je moˇzn´e vytv´aˇret vlastn´ı bloky (vytv´aˇren´ım subsyst´em˚ u z existuj´ıc´ıch blok˚ u, pˇr´ıpanˇe naprogramov´an´ım nov´ ych blok˚ u v jazyce C pomoc´ı S-funkc´ı). Po vytvoˇren´ı modelu je moˇzno z integrovan´eho menu spustit jeho simulaci. Pouˇzit´ım v´ ystupn´ıch blok˚ u je moˇzn´e zobrazovat, mˇenit parametry a analyzovat v´ ysledky bˇehem simulace. Stejnˇe tak je moˇzn´e ukl´adat v´ ysledky do promˇenn´ ych Matlabu a d´ale je zpracov´avat, pˇr´ıpadnˇe pouˇz´ıt pro vizualizaci. Protoˇze Simulink je integrov´an v Matlabu, je moˇzn´e simulovat, analyzovat a upravovat modely v obou prostˇred´ıch. 3.1.1
Spuˇ stˇ en´ı Simulinku
Okno pro vytv´aˇren´ı model˚ u (viz obr´azek 1) v Simulinku otevˇreme pomoc´ı menu File→New→Model, knihovnu stavebn´ıch blok˚ u (viz obr´azek 2) pak zobraz´ıme z tohoto okna pomoc´ı View→Library browser. Alternativnˇe lze t´ehoˇz efektu dos´ahnout pˇr´ıkazem simulink z pˇr´ıkazov´e ˇra´dky Matlabu 17
(v m´em pˇr´ıpadˇe tento pˇr´ıkaz ovˇsem pouze otevˇre okno s knihovnou stavebn´ıch blok˚ u Simulinku).
Obr´azek 1: Okno pro kresln´ı modelu v Simulinku
Obr´azek 2: Knihovna stavebn´ıch blok˚ u pro Simulink
18
3.1.2
Jednoduch´ e pˇ r´ıklady
Nejjednoduˇsˇs´ı pˇr´ıklad: zobrazen´ı funkce sin(t) pomoc´ı bloku zdroje Sine Wave a bloku v´ ystupu Scope. Vyzkouˇsejte si ovl´ad´an´ı parametr˚ u blok˚ u: nastaven´ı d´elky periody, nastaven´ı amplitudy, nastaven´ı f´aze, automatick´e zobrazen´ı cel´eho grafu v pˇr´ıpadˇe, ˇze pˇrekraˇcuje implicitnˇe nastaven´e meze. Jak pomoc´ı zdroje Sine Wave z´ısk´am funkci cos(t)? Pomoc´ı bloku Mux zobrazte oba dva pr˚ ubˇehy v jednom grafu. Zobrazte souˇcet sin(t) + cos(t), zobrazte n´asobek dvou funkc´ı. 3.1.3
Kruˇ znice
Vyzkouˇsejte si, co se stane pˇri pouˇzit´ı bloku v´ ystupu XYGraph a dvou vstup˚ u Sine Wave, z nichˇz jeden simuluje funkci sin(t) a druh´ y funkci cos(t). Proˇc je v´ ystupem simulace jednotkov´a kruˇznice? Cviˇ cen´ı 6: Namodelujte syst´em zobrazuj´ıc´ı rovnici kruˇznice s polomˇerem r, danou rovnicemi x = r sin t y = r cos t
Cviˇ cen´ı 7: Namodelujte syst´em zobrazuj´ıc´ı logaritmickou spir´alu x = e−kt sin t y = e−kt cos t Jak byste nasimulovali syst´em generuj´ıc´ı obraz archimedovy spir´aly, pˇr´ıpadnˇe asteroidy? Asteroida je pops´ana soustavou rovnic x = sin3 t y = cos3 t a Archimedova spir´ala je pops´ana soustavou x = t sin t y = t cos t 3.1.4
Parametry simulace
Pokud se v´am v pˇredchoz´ıch pˇr´ıkladech zobrazovaly jenom podivn´e hranat´e tvary, nijak nepˇripom´ınaj´ıc´ı to, co jste pˇredpokl´adali, ˇze uvid´ıte, je to patrnˇe t´ım, ˇze simulace prob´ıhala bud’ pˇr´ıliˇs kr´atce, nebo byl ˇcasov´ y krok simulace pˇr´ıliˇs velk´ y. Okno pro nastaven´ı parametr˚ u simulace (viz obr´azek 3) lze otevˇr´ıt bud’ kl´avesovou zkratkou Ctrl+E nebo z menu v oknˇe modelu pomoc´ı volby Simulation→Simulation parameters.... 19
Obr´azek 3: Nastaven´ı parametr˚ u simulace
V tomto oknˇe m˚ uˇzete nastavit, jestli simulace prob´ıh´a s promˇenn´ ym ˇcasov´ ym krokem, ˇci s krokem pevn´ ym, a parametry ˇcasov´eho kroku – poˇc´ateˇcn´ı krok (tedy hodnotu, s n´ıˇz simulace zaˇc´ın´a), minim´aln´ı a maxim´aln´ı ˇcasov´ y krok (pro simulaci s promˇenn´ ym ˇcasov´ ym krokem). Volbou poloˇzek Start time a Stop time vol´ıte d´elku doby simulace. Vyzkouˇsejte si to. 3.1.5
Nab´ıdka-popt´ avka
V pˇr´ıkladu 5.2 na stran´ach 99–100 je uk´az´an model ekonomick´eho syst´emu v´ yvoje ceny na z´akladˇe nab´ıdky a popt´avky. Ve skriptu se tento pˇr´ıklad ˇreˇs´ı pomoc´ı Z-transformace, ale na obr´azku 5.12 m˚ uˇzete vidˇet model p˚ uvodn´ı diferenˇcn´ı rovnice, z n´ıˇz model vych´az´ı (viz t´eˇz odvozen´ı rovnice (2.8) na stranˇe 14). Ve skriptu zn´azornˇen´ y model poˇc´ıt´a s pevn´ ymi hodnotami – upravte jej pro uˇzivatelem zadan´e hodnoty parametr˚ u a, b, c a d. 3.1.6
Fakulta
Z´akladn´ı model pˇredpov´ıdaj´ıc´ı poˇcet student˚ u absolvuj´ıc´ıch studium napˇr´ıklad na FD ˇ CVUT je opˇet pops´an ve skriptu v pˇr´ıkladu 5.3 na stran´ach 100–103. Upravte tento model tak, aby zohledˇ noval fakt, ˇze po nedokonˇcn´ı prvn´ı etapy studia nˇektˇr´ı studenti konˇc´ı, a ˇze do kaˇzd´eho vyˇsˇs´ıho roˇcn´ıku mohou pˇristoupit studenti z jin´ ych ˇskol.
3.2
Modelov´ an´ı v Simulinku
Vˇetˇsinu podklad˚ u nalezenete ve skriptech [1]. C´ılem t´eto kapitoly je sezn´amit v´as s modelov´an´ım jednoduch´ ych dynamick´ ych syst´em˚ u popsan´ ych vnˇejˇs´ım a vnitˇrn´ım popisem. Pro samostudium doporuˇcujeme kapitoly 3.3 (str´anky 54–59), a v nich probran´e pˇr´ıklady a pˇr´ıklady 5.4 a 5.5 na stran´ach 103–105. 3.2.1
Integr´ ator a jednotkov´ e zpoˇ zdˇ en´ı
Pˇri simulaci spojit´ ych syst´em˚ u vyuˇz´ıv´ame bloku Integrator, jenˇz, jak jeho n´azev napov´ıd´a, integruje vstupn´ı sign´al v ˇcase. Funkci bloku demonstruje jednoduch´e sch´ema zn´azornˇen´e na obr´azku 4. Pˇrivedeme-li na vstup integr´atoru sign´al a(t), bude v´ ystup 20
tohoto bloku odpov´ıdat sign´alu bloku bude a(t).
R
a(τ )dτ , a obr´acenˇe: je-li na vstupu y'(t)
Step
da(t) , dt
na v´ ystupu
y(t)
1 s
Integrator
Scope
Obr´azek 4: Jednoduch´ y pˇr´ıklad ukazuj´ıc´ı funkci integr´atoru. Pˇri simulaci diskr´etn´ıch syst´em˚ u pak vyuˇz´ıv´ame bloku Unit Delay, jenˇz vzorkuje vstupn´ı sign´al kaˇzdou celou ˇcasovou jednotku simulace a navzorkovanou hodnotu v ˇcase o jednotku zpozd´ı – to, co jsme pˇrivedli na vstup toto bloku v okamˇziku t = ν nalezneme na v´ ystupu tohoto bloku aˇz v ˇcase n = ν +1 a tato hodnota bude na v´ ystupu pro vˇsechna n < ν + 2. Funkci bloku demonstruje sch´ema zn´azornˇen´e na obr´azku 5. Pˇrivedeme-li na vstup integr´atoru sign´al a(n), bude v´ ystup tohoto bloku odpov´ıdat sign´alu a(n − 1), a obr´acenˇe, je-li na vstupu a(n + 1), na v´ ystupu obdrˇz´ıme a(n). y(n) respektive y(n+1) Pulse Generator
1
y(n-1) respektive y(n)
z
Unit Delay
Scope
Obr´azek 5: Jednoduch´ y pˇr´ıklad ukazuj´ıc´ı funkci bloku Unit Delay,
3.2.2
Diferenci´ aln´ı rovnice
Vytvoˇrme jednoduch´ y model syst´emu popsan´eho diferenci´aln´ı rovnic´ı prvn´ıho ˇr´adu y 0 (t) + a · y(t) = sin(t).
(5)
Celou rovnici nejprve pˇrep´ıˇseme tak, aby na lev´e stranˇe byla nejvyˇsˇs´ı derivace, v tomto pˇr´ıpadˇe y(t), y 0 (t) = sin(t) − a · y(t), vzhledem k tomu, ˇze rovnice mus´ı platit i pˇri modelov´an´ı, mus´ı b´ yt rozd´ıl veliˇcin u(t) a 0 a · y(t) roven derivaci y (t). Pr˚ ubˇeh y(t) ovˇsem nezn´ame – lze jej ale z´ıskat pomoc´ı integr´atoru z vypoˇcten´e derivace, kterou m´ame na v´ ystupu. V´ ysledn´e sch´ema je na obr´azku 6. Cviˇ cen´ı 8: Zkuste si stejn´ ym zp˚ usobem vytvoˇrit sch´ema k rovnici y 000 (t) + b · y 00 (t) + a · y(t) = sin(t).
(6)
21
Sine Wave 1 s
Integrator
y(t)
a
sin(t)
a y(t)
y'(t)
Sum
Gain
Obr´azek 6: Simulaˇcn´ı sch´ema pro rovnici (5).
3.2.3
Diferenˇ cn´ı rovnice
Mˇejme syst´em popsan´ y diferenˇcn´ı rovnic´ı y(n − 1) + a · y(n) = u(t).
(7)
Pˇred modelov´an´ım si opˇet rovnici m˚ uˇzeme upravit na 1 y(n) = [u(t) − y(n − 1)] . a a pomoc´ı bloku Unit Delay z y(n) vyrob´ıme y(n − 1). V´ ysledek pro u(t) = t je na obr´azku 7. u(n)
Clock 1
z
u(n)-y(n-1) y(n-1)
1/a
y(n)
Gain
Sum
Unit Delay Scope
Obr´azek 7: Simulaˇcn´ı sch´ema pro rovnici (7).
Cviˇ cen´ı 9: Zkuste si nyn´ı samostatnˇe namodelovat obdobn´ y syst´em, popsan´ y rovnic´ı: y(n + 1) + a · y(n) = 1(t).
3.2.4
(8)
Vnitˇ rn´ı popis syst´ emu
Doposud jsme se zab´ yvali modely syst´em˚ u popsan´ ych vnˇejˇs´ım popisem. V nˇekter´ ych pˇr´ıpadech je ovˇsem lepˇs´ı pouˇz´ıt vnitˇrn´ı popis. Obr´azek 8 ukazuje model diskr´etn´ıho syst´emu popsan´eho soustavou x2 (n) = bx1 (n−1) + cx2 (n−1) + u2 u(n) x1 (n) = ax1 (n−1) + u1 u(n) y(n) = y1 x1 (n) + y2 x2 (n) 22
(9)
Sine Wave
u1
u(n)
1
z
Gain2 x1(n-1)
Unit Delay1
a
x1(n) a*x1(n-1)
Sum
y1
Gain4
Gain6
u2
y2
Gain3 x2(n)
b 1
z
y(n)
Scope
Gain7
Gain1 x2(n-1)
Unit Delay2
c Gain5
Obr´azek 8: Model vnitˇrn´ıho popisu syst´emu podle soustavy (9).
Reference [1] Sv´ıtek, M., Borka, J., Vlˇcek M.: Modelov´an´ı syst´em˚ u a proces˚ u. Uˇcebn´ı text Fakulty ˇ ˇ dopravn´ı CVUT, vydavatelstv´ı CVUT, Praha, 2001.
23
ˇ sen´ı Matlab Reˇ Cviˇ cen´ı 1: 1. Definujte vektor ~a, kter´ y obsahuje prvky 3, 4, 5, 6, 7, 8. >> a = [3 4 5 6 7 8] >> a = 3:8 2. Definujte vektor ~a, kter´ y obsahuje prvky 8, 7, 6, 5, 4, 3. >> a = [8 7 6 5 4 3] >> a = 8:-1:3 3. Definujte vektor ~a, kter´ y obsahuje pouze sud´a ˇc´ısla od 1 do 20. >> a = 2:2:20
Cviˇ cen´ı 2: 1. Nadefinujte vektory ~u, ~v , w ~ stejn´e d´elky a vytvoˇrte z nich tabulku, kde v prvn´ım sloupci bude vektor ~u, ve druh´em ,~v , a ve tˇret´ım w. ~ >> u = [1 0 0 1] >> v = [1 1 1 1] >> w = [1 0 1 0] >> T = [u’ v’ w’] 2. Vytvoˇrte tabulku, goniometrick´ ych funkc´ı od −2π do 2π. >> t = -2*pi:0.1:2*pi; >> s = sin(t); >> c = cos(t); >> Tabulka = [t’ s’ c’]
Cviˇ cen´ı 3: 1. Je d´an vektor ~u = {9 11 13 · · · 97}T . Jak tento vektor nejefektivnˇeji zad´ate. >> u = 9:2:97 2. Zadejte matici A, s dimenz´ı 8 × 7, kter´a m´a vˇsechny prvky nulov´e, pouze prvky [1, 4] a [4, 6] jsou rovny 1. >> A = zeros(8,7) >> A(1,4) = 1; >> A(4,6) = 1; >> A 3. Zadejte libovolnou matici A. Jak vytvoˇr´ıte vektor ~u, kter´ y bude obsahovat vˇsechny prvky druh´eho sloupce matice A. >> A = [1 2 3 4; 1 1 1 1; 2 2 2 2]; >> u = A(:,2) 4. Zadejte libovoln´e matici A a B se stejnou dimenz´ı. V matici A nahrad’te prvn´ı sloupec, posledn´ım sloupcem matice B. >> A = [1 2 3 4; 1 1 1 1; 2 2 2 2]; >> B = [1 1 1 1; 0 0 0 0; 1 1 1 1]; >> A(:,1) = B(:,4); >> A
24
Cviˇ cen´ı 4: 1. Zadejte matici A a B. Jak provedete vektorov´ y souˇcin? Jak´e mus´ı b´ yt dimenze matice A a B? >> A = [1 2 3; 1 2 3]; >> B = [1 2; 3 4; 5 6]; >> s = A * B (m,n)*(n,k)=(m,k), v´ ysledkem operace je skal´ ar 2. Od vˇsech prvk˚ u matice A odeˇctˇete konstantu 3. >> A = [1 2 3 4; 1 1 4 4; 4 4 4 4]; >> A = A - 3; 3. Je d´an vektor ~u = {1 3 5 7} a vektor ~v = {2 4 6 8}T . Jak vypoˇctete souˇcin vektoru ~u a vektoru ~v . Jak by souˇcin vypadal v pˇr´ıpadˇe operace ”prvek s prvkem”. >> s = u * v’ >> S = u .* v
Cviˇ cen´ı 5: 1. Je d´ana matice A=[1 2 3; 4 5 6; 1 2 3]. Jak zjist´ıte, zda jsou hodnoty prvk˚ uv prvn´ım ˇra´dku matice A menˇs´ı neˇz hodnoty prvk˚ u ve tˇret´ım sloupci matice A. Zapiˇste v´ ysledek t´eto operace. >> A(1,:)> ans = >> 1 1 0 2. Je d´an vektor ~u = {1 2 3}. V´ ysledkem operace ~u 6= ~v je vektor {1 0 1} . Jak zad´ate libovoln´ y vektor ~v , kter´ y odpov´ıd´a zadan´e operaci. napˇ r. >> v = [5 2 5] 3. Je d´an vektor ~u = {2 2 3} a vektor ~v = {1 2 1}. Napiˇste relaˇcn´ı oper´ator, pomoc´ı kter´eho zjist´ıte, zda je vektor ~u roven vektoru ~v . Zapiˇste v´ ysledek t´eto operace. >> u == v ans = 0 1 0
25
ˇ sen´ı Simulink Reˇ Cviˇ cen´ı 6: Namodelujte syst´em zobrazuj´ıc´ı rovnici kruˇznice s polomˇerem r, danou rovnicemi x = r sin t y = r cos t
r Sinus
r*sin(t) XY Graph
r Cosinus
r*cos(t)
Obr´azek 9: Kruˇznice o polomˇeru r.
Cviˇ cen´ı 7: Namodelujte syst´em zobrazuj´ıc´ı logaritmickou spir´alu x = e−kt sin t y = e−kt cos t
Sinus
r(t)*sin(t) XY Graph
Cosinus
r(t)*cos(t) r(t)
Clock
-k -k*t
eu exp(-k*t)
Obr´azek 10: Logaritmick´a spir´ala.
Cviˇ cen´ı 8: Zkuste si stejn´ ym zp˚ usobem vytvoˇrit sch´ema k rovnici y 000 (t) + b · y 00 (t) + a · y(t) = sin(t).
(10)
26
Sine Wave 1 s
Integrator1
1 s
y'(t)
Integrator2
sin(t) y'''(t)
1 s
a
y(t)
Integrator3
Sum
a y(t)
Gain2 b
b y''(t)
Gain1
Obr´azek 11: Model syst´emu popsan´eho rovnic´ı (10).
Cviˇ cen´ı 9: Zkuste si nyn´ı samostatnˇe namodelovat obdobn´ y syst´em, popsan´ y rovnic´ı: y(n + 1) + a · y(n) = 1(t).
(11)
Sine Wave 1
z
Unit Delay
y(n)
a
sin(n) y(n+1) a y(n)
Sum
Gain Scope
Obr´azek 12: Model syst´emu popsan´eho rovnic´ı (11).
27