Project3 zadnje 2010:Layout 1 - GRAPHIS · 2015. 3. 17. · Title: Project3_zadnje_2010:Layout...

37
za rješavanje tehničkih problema Primjena programskog sustava MATLAB Referalni centar za programski sustav MATLAB Željko Ban Jadranko Matuško Ivan Petrović

Transcript of Project3 zadnje 2010:Layout 1 - GRAPHIS · 2015. 3. 17. · Title: Project3_zadnje_2010:Layout...

  • za rješavanje tehničkih problema

    Primjena programskog sustava

    MATLAB

    Referalni centar za programski sustav MATLAB

    Željko BanJadranko Matuško

    Ivan Petrović

    Project3_zadnje_2010:Layout 1 14.01.2010 12:29 Page III

  • Sadržaj

    Predgovor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IX1. Osnove programskoga sustava Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

    1.1. Uvod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2. Pokretanje i organizacija Matlaba . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

    1.2.1. Pokretanje Matlaba . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.2.2. Organizacija Matlaba. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

    1.3. Varijable u Matlabu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91.3.1. Tipovi varijabla u Matlabu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101.3.2. Definiranje varijabla . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

    1.3.2.1. Definiranje vektora i matrica. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131.3.2.2. Definiranje niza brojeva. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151.3.2.3. Izlučivanje dijela matrice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161.3.2.4. Definiranje polja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171.3.2.5. Definiranje strukture podataka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

    1.3.3. Brisanje varijabla. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181.3.4. Naredbe za rad s diskom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

    1.3.4.1. Spremanje varijabla na disk i njihovo učitavanje. . . . . . . . . . . . . . . . 181.3.4.2. Naredbe za upravljanje direktorijima i datotekama . . . . . . . . . . . . 19

    1.3.5. Naredbe za upravljanje ispisom varijabla . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201.4. Operacije u Matlabu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

    1.4.1. Aritmetički operatori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231.4.2. Relacijski operatori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281.4.3. Logički operatori. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291.4.4. Naredbe odluke i ponavljanja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

    1.5. Funkcije u Matlabu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331.5.1. Elementarne matematičke funkcije . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

    1.5.1.1. Trigonometrijske i ciklometrijske funkcije . . . . . . . . . . . . . . . . . . . . . . 34

    Project3_zadnje_2010:Layout 1 14.01.2010 12:29 Page V

  • SADRŽAJVI

    1.5.1.2. Logaritamske i hiperbolne funkcije . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351.5.1.3. Ostale funkcije . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

    1.5.2. Funkcije za obradu vektora i matrica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361.5.2.1. Funkcije za definiranje matrica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361.5.2.2. Relacijske i logičke funkcije . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371.5.2.3. Funkcije za obradu vektora . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381.5.2.4. Funkcije za obradu matrica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

    1.5.3. Funkcije za obradu znakovnih nizova . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391.5.4. Funkcije za rad s polinomima . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401.5.5. M-funkcije. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

    1.5.5.1. Promjenjivi broj ulaznih i izlaznih argumenata . . . . . . . . . . . . . . . . . 431.5.6. Poboljšanje performansi korisničkih funkcija . . . . . . . . . . . . . . . . . . . . . . . . . . 45

    1.5.6.1. Uporaba M-funkcija umjesto M-skripata . . . . . . . . . . . . . . . . . . . . . . . 451.5.6.2. Alociranje memorije . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451.5.6.3. Vektorizacija kôda. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471.5.6.4. Uporaba maski . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

    1.6. Grafičke funkcije u Matlabu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511.6.1. Dvodimenzionalni grafički prikaz. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511.6.2. Naredbe za doradu grafičkih prikaza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521.6.3. Naredbe za označavanje slike . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531.6.4. Trodimenzionalni grafički prikaz. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

    1.6.4.1. Crtanje krivulja u trodimenzionalnom prostoru . . . . . . . . . . . . . . . . 581.6.4.2. Crtanje ploha u trodimenzionalnom prostoru . . . . . . . . . . . . . . . . . . 601.6.4.3. Dorada 3D grafičkih prikaza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

    2. Simbolički paket . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

    2.1. Uvod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 652.2. Osnovne funkcije Simboličkog paketa. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

    2.2.1. Stvaranje simboličkih varijabla. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 672.2.1.1. Stvaranje simboličkih varijabla naredbom sym . . . . . . . . . . . . . . . . . 672.2.1.2. Stvaranje simboličkih varijabla naredbom syms . . . . . . . . . . . . . . . . 692.2.1.3. Stvaranje simboličkih varijabla kao rezultata simboličkih

    operacija i funkcija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 692.2.2. Prikaz simboličkih varijabla i izraza. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 712.2.3. Pretvorba simboličkih varijabla i izraza u numeričke . . . . . . . . . . . . . . . . . . 742.2.4. Osnovne operacije nad simboličkim varijablama . . . . . . . . . . . . . . . . . . . . . . 76

    2.3. Funkcije matematičke analize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 792.3.1. Deriviranje simboličkih izraza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 792.3.2. Integriranje simboličkih izraza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 802.3.3. Aproksimacija simboličkih funkcija Maclaurinovim ili

    Taylorovim redom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 812.3.4. Izračunavanje graničnih vrijednosti simboličkih funkcija . . . . . . . . . . . . . . 822.3.5. Izračunavanje Jacobian matrice. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 822.3.6. Izračunavanje zbroja simboličkih izraza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83

    2.4. Funkcije linearne algebre. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 852.4.1. Određivanje ili zadavanje dijagonale matrice . . . . . . . . . . . . . . . . . . . . . . . . . . 85

    Project3_zadnje_2010:Layout 1 14.01.2010 12:29 Page VI

  • SADRŽAJ VII

    2.4.2. Izlučivanje trokutastih matrica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 862.4.3. Izračunavanje determinante, inverzne matrice i ranga matrice. . . . . . . . 872.4.4. Izračunavanje svojstvenoga polinoma, svojstvenih vrijednosti i

    svojstvenih vektora matrice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 882.5. Funkcije za rješavanje jednadžbi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91

    2.5.1. Analitičko rješavanje sustava algebarskih jednadžbi . . . . . . . . . . . . . . . . . . . 912.5.2. Analitičko rješavanje sustava diferencijalnih jednadžbi . . . . . . . . . . . . . . . 932.5.3. Simboličko izračunavanje inverzne funkcije . . . . . . . . . . . . . . . . . . . . . . . . . . . 932.5.4. Simboličko izračunavanje kompozicije funkcija . . . . . . . . . . . . . . . . . . . . . . . 94

    2.6. Integralne transformacije. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 952.6.1. Fourierova transformacija i inverzna Fourierova transformacija . . . . . . 952.6.2. Laplaceova transformacija i inverzna Laplaceova transformacija . . . . . 962.6.3. Z-transformacija i inverzna Z-transformacija. . . . . . . . . . . . . . . . . . . . . . . . . . 97

    2.7. Pojednostavljenje i promjene zapisa simboličkih izraza . . . . . . . . . . . . . . . . . . . . . 992.7.1. Pojednostavljenje simboličkih izraza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 992.7.2. Promjene zapisa simboličkih izraza i polinoma. . . . . . . . . . . . . . . . . . . . . . . 101

    2.8. Grafičke funkcije Simboličkoga paketa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1052.8.1. Prikazi simboličkih funkcija u dvodimenzionalnom prostoru . . . . . . . . 105

    2.8.1.1. Prikaz simboličkih funkcija u dvodimenzionalnom pravokutnom koordinatnom sustavu. . . . . . . . . . . . . . . . . . . . . . . . . . . 105

    2.8.1.2. Prikaz simboličkih funkcija u polarnom koordinatnom sustavu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107

    2.8.2. Prikazi simboličkih funkcija u trodimenzionalnom prostoru . . . . . . . . . 1082.8.2.1. Prikaz simboličkih funkcija trodimenzionalnim krivuljama. . . . 1082.8.2.2. Prikaz simboličkih funkcija trodimenzionalnom mrežom . . . . . 1092.8.2.3. Prikaz simboličkih funkcija trodimenzionalnim plohama. . . . . . 1122.8.2.4. Prikaz simboličkih funkcija konturnim linijama . . . . . . . . . . . . . . . 114

    Dodatak: Popis svih funkcija Simboličkog paketa v.3.2.2. . . . . . . . . . . . . . . . . . . . . . . . . 117

    3. Simulacije dinamičkih sustava u programskom paketu Simulink . . . . . . . . . . . . 123

    3.1. Uvod. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1233.2. Simulacija dinamičkih sustava u Simulinku . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125

    3.2.1. Izvođenje simulacije u Simulinku . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 3.2.1.1. Prevođenje simulacijskog modela. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1263.2.1.2. Povezivanje simulacijskog modela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1263.2.1.3. Rješavanje simulacijskog modela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126

    3.2.2. Postupci numeričke integracije u Simulinku. . . . . . . . . . . . . . . . . . . . . . . . . . 1273.2.2.1. Postupci numeričke integracije s nepromjenjivim korakom . . . 1273.2.2.2. Postupci numeričke integracije s promjenjivim vremenskim

    korakom. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1283.3. Osnovne tehnike rada u Simulinku . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131

    3.3.1. Osnovne akcije unutar Simulinka. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 3.3.1.1. Pokretanje Simulinka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1313.3.1.2. Stvaranje novog Simulink modela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1323.3.1.3. Otvaranje postojećeg simulacijskog modela u Simulinku. . . . . . 132

    Project3_zadnje_2010:Layout 1 14.01.2010 12:29 Page VII

  • SADRŽAJVIII

    3.3.1.4. Unos osnovnih postavki simulacije . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1333.3.1.5. Simulinkova biblioteka blokova. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133

    3.3.2. Primjeri simulacije dinamičkih sustava u Simulinku. . . . . . . . . . . . . . . . . . 1353.3.2.1. Simulacija matematičkoga njihala . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1353.3.2.2. Simulacija RLC-kruga. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137

    3.4. Napredne tehnike rada u Simulinku . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1413.4.1. Razlaganje sustava na podsustave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141

    3.4.1.1. Stvaranje podsustava . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1413.4.1.2. Maskiranje podsustava . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143

    3.4.2. Algebarske petlje u sustavu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1463.4.3. Otkrivanje prolaska signala kroz nulu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1493.4.4. Simulacija krutih dinamičkih sustava . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154

    3.4.5. Preporuke za odabir postupka numeričke integracije. . . . . . . . . . . . . . . . . . . . 1603.4.6. Upravljanje simulacijom iz Matlabova naredbodavnog prozora . . . . . 161

    Kazalo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167

    Project3_zadnje_2010:Layout 1 14.01.2010 12:29 Page VIII

  • Predgovor

    Programski sustav Matlab složen je viši programski jezik za razna tehničkaizračunavanja. Integrira računanje, vizualizaciju i programiranje u korisnički orijen-tiranomu okružju, u kojem se problemi i rješenja iskazuju u uobičajenoj matematičkojnotaciji. Tipične su primjene Matlaba numerička i simbolička izračunavanja, razvojalgoritama, akvizicija podataka, modeliranje i simulacija sustava, eksperimentiranjasa sustavima u stvarnome vremenu, obradba i vizualizacija podataka, znanstveno-in-ženjerska grafika te razvoj aplikacija, uključujući i razvoj grafičkih korisničkih sučelja.

    Matlab jest interaktivni programski sustav kojemu je osnovni podatkovni ele-ment polje. Polju nije potrebno zadavati dimenziju pa se razni algoritmi, osobito onikoji zahtijevaju operacije s matricama i vektorima, programiraju neusporedivo bržeu Matlabu nego u neinteraktivnim skalarnim programskim jezicima, kao što su C iliFortran.

    Na razvoj su Matlaba od početaka prije dvadesetak godina pa sve do danas zna-čajno utjecali i mnogobrojni korisnici. Upravo je Matlab postao gotovo nezamje-njivim programskim alatom za izvođenje nastave na mnogobrojnim visokoškolskimkolegijima iz prirodoslovnih i tehničkih znanstvenih disciplina. U industriji je Matlabpostao najzastupljenijim programskim alatom za visokoučinkovita istraživanja i raz-voj.

    Osim osnovnoga programskog okruženja Matlab se sastoji i od velikoga brojadodatnih funkcija razvrstanih u tzv. pakete (engl. toolboxes), koji su organiziraniprema području primjene. Primjerice, postoje paketi za obradbu signala, upravljanje

    Project3_zadnje_2010:Layout 1 14.01.2010 12:29 Page IX

  • PREDGOVORX

    sustavima, neuronske mreže, neizrazitu logiku, valiće, komunikacije, simboličkumatematiku, statistiku itd. Ta široka lepeza paketa u velikoj mjeri pridonosi sveopćojrasprostranjenosti i popularnosti Matlaba, jer korisnicima omogućuje brzo učenje iprimjenu specijaliziranih znanja iz njihova stručnog područja.

    Cilj je ove knjige prikazati osnovne mogućnosti programskoga sustava Matlab urješavanju tehničkih problema. Knjiga je namijenjena početnicima u korištenju Mat-laba, a ponajprije studentima Fakulteta elektrotehnike i računarstva Sveučilišta u Za-grebu. Građa obrađena u knjizi zapravo je sadržaj predmeta „Laboratorij i vještine– Matlab“ koji je obvezni predmet na drugoj godini Preddiplomskog studija Elek-totehnike i informacijske tehnologije i Preddiplomskog studija Računarstva. Osimtoga, knjiga dobrim dijelom pokriva sadržaj tečajeva koje Referalni centar za pro-gramski sustav Matlab održava za korisnike Matlaba s hrvatskih sveučilišta. U nekimsu dijelovima knjige obrađene i neke naprednije mogućnosti Matlaba za koje držimoda su važne širem krugu korisnika i da mogu biti zanimljive i naprednijim korisnicima.

    Knjiga se sastoji od tri dijela: 1. Osnove programskoga sustava Matlab, 2. Sim-bolički paket i 3. Simulacije dinamičkih sustava u Simulinku. U prvome se dijeluobrađuje jezgra Matlaba s osnovnim funkcijama kojima korisnik mora ovladati da bimogao uspješno rješavati barem jednostavnije probleme. Uključivanje Simboličkogapaketa u sadržaj ove knjige smatramo neophodnim, jer taj paket omogućuje sim-boličko računanje te bi, za razliku od drugih paketa koji su uglavnom usko specijali-zirani, mogao biti iznimno koristan alat korisnicima iz raznih stručnih područja.Uloga simulacija u analizi vladanja sustava postaje sve veća u raznim industrijskimgranama, jer ubrzava proces istraživanja i razvoja te smanjuje potrebe izgradnje fizič-kih modela sustava. Stoga je svoje mjesto u knjizi našao i Simulink – grafički paketkoji omogućuje izgradnju simulacijskoga modela sustava spajanjem blokova ugrafičkom editoru.

    Nadamo se da smo uspjeli napisati knjigu koja pruža učinkovit i zanimljiv načinstjecanja iskustva u primjeni Matlaba u rješavanju tehničkih problema. Ako ova knji-ga pomogne studentima u ovladavanju primjene Matlaba i ako je oni ocijene koris-nom, njezina će svrha biti postignuta.

    U Zagrebu 2. rujna 2008.

    Autori

    Project3_zadnje_2010:Layout 1 14.01.2010 12:29 Page X

  • 1. Osnove programskoga sustava Matlab

    1.1. Uvod

    Potreba za brzom obradbom laboratorijskih mjernih rezultata, kao i potreba zaračunanjem zasnovanim na matričnoj aritmetici, u tehničkim je znanostima dovela dorazvijanja priličnoga broja programa za računanje. Toj grupi programa pripada i Mat-lab koji je razvila tvrtka MathWorks Inc. Osnovna je jezgra Matlaba izgrađena u os-novi oko matričnog kalkulatora s mogućnošću izvršavanja niza naredaba grupiranihu skriptu ili funkciju. Mogućnost pisanja funkcija u Matlabu omogućila je razvoj či-tavog niza specijaliziranh programskih paketa (engl. toolboxes) koji danas zajedno sosnovnom jezgrom i korisničkim sučeljima čine Matlab. Upravo je modularnost iotvorenost Matlaba za definiranje novih paketa postala njegova velika prednost uodnosu na ostale slične programe koji u pravilu imaju zatvorenu strukturu, a nado-gradnju mogu izvesti samo proizvođači. Matlab je svojom otvorenošću omogućio ko-risnicima da u neku ruku postanu njegov razvojni tim. U Matlabu su razvijani paketiuglavnom namijenjeni većini djelatnosti u području tehničkih znanosti, a neki se alatiprimjenjuju i izvan tehničkih znanosti.

    U ovom se dijelu knjige prikazuju osnovne mogućnosti Matlaba odnosno opisujese njegova osnovna jezgra. Prikazana je organizacija Matlaba koja korisniku olakšavashvaćanje logike rada s programom. Nadalje, navedene su strukture podataka kojese koriste u programu kao i operacije i funkcije koje su dio osnovne jezgre Matlaba.Analiziran je način pisanja korisničkih funkcija (tzv. M-funkcija) koje omogućuju au-tomatizaciju i ubrzanje računanja i prikaza rezultata. Kako se rezultat proračunačesto mora i grafički prikazati, opisane su i grafičke funkcije Matlaba.

    Project3_zadnje_2010:Layout 1 14.01.2010 12:29 Page 1

  • 1.2. Pokretanje i organizacija Matlaba

    Naziv Matlab dolazi od engleskih riječi MATrix LABoratory, što označava njegovaosnovna svojstva – rad s matričnim varijablama i primjena u obradbi mjernih rezultatau laboratoriju.

    Matlab jest interaktivni matrični kalkulator interpreterskog tipa zasnovan navarijablama. Omogućuje izvođenje tzv. 'Matlab funkcija' i posjeduje grafičko kori-sničko sučelje.

    1.2.1. POKRETANJE MATLABA

    Pokretanje programa Matlab ovisno je o računalnoj platformi na kojoj sepokreće. Na PC računalima s operacijskim sustavom Windows Matlab je mogućepokrenuti na tri načina:

    – dvostrukim klikom miša na ikonu Matlabana Desktopu Windowsa,

    – primjenom Start izbornika (Matlab se običnonalazi na mjestu Start/All Programs/Matlab/Mat-lab),

    – upisom naredbe matlab u Run prozor unu-tar Start izbornika.

    Pri pokretanju Matlaba na zaslonu se kratkopojavljuje Matlabov znak prikazan na slici 1.2.1.

    Slika 1.2.1. Znak programskoga sustava Matlab

    Project3_zadnje_2010:Layout 1 14.01.2010 12:29 Page 3

  • Nakon nestajanja Matlabova znaka pojavljuje se glavni prozor Matlaba prikazanna slici 1.2.2.

    Glavni prozor Matlaba sadrži redak s izbornicima, redak s alatima (engl. toolbar)i tri prozora. U lijevom gornjem dijelu glavnog prozora smješten je prozor kojiomogućuje uvid u Matlabov radni prostor (engl. Workspace) i u trenutni direktorij. Udonjem je lijevom dijelu glavnoga prozora smješten prozor s popisom izvršenih nare-daba (engl. Command history window). U desnom je dijelu glavnoga prozora naredbo-davni prozor (engl. Command window) u koji se upisuju naredbe Matlaba i dobivajunumerički rezultati. Znak >> u naredbodavnom prozoru jest Matlabov prompt. Toje znak koji se pojavljuje kao posljednji u prozoru i označava da je Matlab spremanza prihvat korisnikovih naredaba. Iza prompta nalazi se kursor koji označava mjestopočetka upisa naredbe. Upisana se naredba izvršava pritiskom tipke Enter. Važno jenapomenuti da Matlab razlikuje velika i mala slova kod pisanja naredaba.

    Završetak rada s Matlabom postiže se naredbom Quit. Ta naredba vrijedi bezobzira na kojoj se računalnoj platformi Matlab izvodi. Kod izvođenja Matlaba na PCračunalu s Windowsima rad se s Matlabom može završiti i odabirom naredbe Exitiz izbornika File ili bilo kojim uobičajenim načinom zatvaranja prozora u Windowsokruženju.

    Pomoć se u Matlabu dobiva naredbama help i lookfor. Naredba help samaza sebe ispiše popis svih podcjelina i paketa u kojima se dalje mogu naći traženenaredbe. Navođenjem naziva podcjeline iza naredbe help dobije se detaljniji popismogućih naredaba te podcjeline. Za dobivanje sintakse i objašnjenja pojedinenaredbe potrebno je napisati:

    >> help naredba

    gdje je naredba naziv naredbe za koju tražimo sintaksu. Primjerice, pomoć zanaredbu za crtanje bila bi:

    Slika 1.2.2. Glavni prozor programskoga sustava Matlab

    1. OSNOVE PROGRAMSKOGA SUSTAVA MATLAB4

    Project3_zadnje_2010:Layout 1 14.01.2010 12:29 Page 4

  • >> help plot

    Ako nam nije poznat specifičan naziv naredbe, služimo se naredbom lookfori to tako da iza naredbe navedemo ključnu riječ tražene funkcije. Primjerice, moramooznačiti osi na grafikonu, a ne znamo naredbu za to. U tom slučaju dovoljno je izanaredbe lookfor upisati pojam koji označava oznaku (engl. label):

    >> lookfor label

    Kao rezultat dobije se popis svih naredaba koje u imenu ili u opisu sadrže riječlabel. Prvih pet naredaba s popisa jesu:

    PLOTYY Graphs with y tick labels on the left and right.

    XLABEL X-axis label.

    YLABEL Y-axis label.

    ZLABEL Z-axis label.

    CLABEL Contour plot elevation labels...

    Za svaku je naredbu s popisa moguće dobiti detaljnu sintaksu pomoću naredbe help.Primjerice, za označavanje x-osi moguće je koristiti naredbu xlabel, za y-os naredbuylabel itd.

    Naredbe help i lookfor prikazuju sintakse naredbe i korisne su i iskusnijimkorisnicima Matlaba. Detaljan prikaz svih naredaba i funkcija Matlaba raspoloživ jeu Matlabovoj elektroničkoj dokumentaciji u html i pdf obliku u koju se ulazi odabiromopcije Matlab Help u Help izborniku. Taj izbornik otvara prozor prikazan na slici1.2.3.

    Slika 1.2.3. Prozor za pristup Matlabovoj dokumentaciji za pomoć

    1.2. POKRETANJE I ORGANIZACIJA MATLABA 5

    Project3_zadnje_2010:Layout 1 14.01.2010 12:29 Page 5

  • 1.3. Varijable u Matlabu

    Kako se rad u Matlabu zasniva na matričnim varijablama, Matlab sve svoje vari-jable tretira matricama. One mogu biti različitih veličina i mogu sadržavati različitetipove podataka. Dimenzija je matrice ograničena jedino raspoloživim memorijskimprostorom računala na kojem se Matlab izvodi. Skalarne se veličine tretiraju matri-cama dimenzije 1×1, a vektori stupčastim ili rednim matricama. Članovi matricemogu biti logički, slovčani (engl. char), numerički, polja (engl. cell) ili neki drugi speci-jalni tipovi podataka ovisni o funkcijama koje ih koriste. Matlab omogućuje kori-snicima i stvaranje novih tipova podataka vezanih uz specifičnu primjenu. Tako je,primjerice, za potrebe Simboličkoga paketa (engl. Symbolic toolbox) stvoren tip po-dataka symbolic. Osnovni su tipovi podataka u Matlabu prikazani na slici 1.3.1.

    Slika 1.3.1. Tipovi podataka u Matlabu

    Logički(logical)

    Slovčani(char)

    Numeričkipodaci

    (Numeric)

    Polja(cell)

    Structure(Structure)

    Java klase(Java classes)

    Funkcijskiidentifikator

    (Function handle)

    Cjelobrojni(integer)

    Cjelobrojni8 bita(int8)

    Cjelobrojni16 bita(int16)

    Cjelobrojni32 bita(int32)

    Cjelobrojni64 bita(int64)

    Jednostrukatočnost(Single)

    Cjelobrojni bezpredznaka 8 bita

    (Uint8)

    Cjelobrojni bezpredznaka 16 bita

    (Uint16)

    Cjelobrojni bezpredznaka 32 bita

    (Uint32)

    Cjelobrojni bezpredznaka 64 bita

    (Uint64)

    Dvostrukatočnost

    (Double)

    Korisničkeklase

    (User classes)

    Matrica ili polje

    Project3_zadnje_2010:Layout 1 14.01.2010 12:29 Page 9

  • 1. OSNOVE PROGRAMSKOGA SUSTAVA MATLAB10

    1.3.1. TIPOVI VARIJABLA U MATLABU

    Kako su podaci u Matlabu uvijek pridruženi varijablama, varijable se razvr-stavaju prema tipovima podataka koje sadrže. Primjerice, ako su članovi matrice re-alni brojevi, i varijabla se naziva realnom, a ako su kompleksni brojevi, i varijabla senaziva kompleksnom. Matlabovi paketi često definiraju i varijable specifičnogsadržaja čiji je oblik podrobno opisan u pripadnom paketu. Tako je, primjerice, u Up-ravljačkom paketu (engl. Control toolbox) definiran sadržaj varijable tipa tf (engl.transfer function) u koju se spremaju podaci oblika prijenosne funkcije sustava.Razvojem novih paketa pojavljuju se i novi tipovi sadržaja varijabla.

    Varijable se, osim prema tipu podataka koje sadrže u Matlabu razvrstavaju iprema vidljivosti (dohvatljivosti) i prema mjestu nastanka. Varijable se prema vidlji-vosti dijele na globalne, lokalne i postojane (perzistentne), a prema mjestu nastankana eksterne i interne.

    Globalne su varijable vidljive iz više funkcija Matlaba. Varijabla postaje globalnatako da se deklarira naredbom:

    >> global ime_varijable

    Sve funkcije koje imaju deklariranu globalnu varijablu ime_varijable mogu do-hvatiti njezin sadržaj.

    Lokalne su varijable sve varijable koje nisu deklarirane kao globalne. Lokalnaje varijabla vidljiva samo u funkciji u kojoj je deklarirana i prestaje postojati u Ma-tlabovu radnom prostoru nakon izvršenja te funkcije. Na taj je način omogućeno dalokalne varijable deklarirane u različitim funkcijama nose isto ime.

    Postojane su varijable poseban tip lokalnih varijabla koje su vidljive samo unutarfunkcije u kojoj su definirane, ali njihov sadržaj ostaje sačuvan u radnom prostoruizmeđu dvaju poziva te funkcije. Da bi neka varijabla bila postojana, potrebno ju jedeklarirati sljedećom naredbom:

    >>persistent ime_varijable

    Sadržaj se tako deklarirane varijable može izbrisati naredbom

    >>clear functions

    ili>>clear ime_funkcije

    pri čemu je ime_funkcije M-funkcija unutar koje je definirana postojana vari-jabla.

    Eksterne varijable jesu varijable koje definira korisnik ili su nastale kao rezultatmatematičkih operacija i funkcija izvedenih u Matlabu. Ime varijable sastoji se odnajmanje jednog znaka do najviše 19 alfanumeričkih znakova (slova engleskeabecede, brojke i znak _). Prvi znak imena obvezno je naveden slovom. U imenu va-rijable razlikuju se velika i mala slova, tako da su primjerice cijev1 i Cijev1 imenadviju različitih varijabla.

    Interne varijable jesu varijable ugrađene u Matlab. Korisnik se njima može služitiu matematičkim operacijama i funkcijama, ali ih ne može obrisati. Također može

    Project3_zadnje_2010:Layout 1 14.01.2010 12:29 Page 10

  • Ime varijable Iznos varijable Opis značenja

    eps 2.2204e−016 Točnost realnih brojeva (razlika između broja 1,0 i prvog većeg realnog broja u ari-tmetici pomičnog zareza s dvostrukom pre-ciznošću).

    realmin 2.225073858507202e−308 Iznos najmanjeg pozitivnog realnog broja u aritmetici pomičnog zareza s dvostrukom preciznošću.

    realmax 1.797693134862316e+308 Iznos najvećeg pozitivnog realnog broja u aritmetici pomičnog zareza s dvostrukom preciznošću.

    pi 3.14159265358979 Iznos broja π.

    inf *.*/0.0 Rezultat dijeljenja nulom.

    NaN 0/0, ∞/∞, 0 ⋅∞ Rezultat nedefiniranih matematičkih ope-racija. NaN je kratica od Not-a-Number.

    i, j Imaginarne jedinice kompleksnih brojeva.

    Tablica 1.3.1. Interne varijable Matlaba

    Primjer 1.3.1. Rad s internom varijablom i

    1.3. VARIJABLE U MATLABU 11

    definirati eksternu varijablu identična imena nekoj internoj varijabli, ali se to ne pre-poruča jer mogu nastupiti pogreške u rezultatima matematičkih operacija. Ako se toipak dogodi, izvorna se vrijednost toj internoj varijabli vraća brisanjem eksterne vari-jable iz Matlabova radnog prostora naredbom clear. Zbog mogućnosti pojave nave-denih problema vrlo je važno da korisnik zna imena i značenja internih varijablaMatlaba pa su sve navedene u tablici 1.3.1.

    Razmotrimo sljedeći izraz u kojem se koristi interna varijabla i kao imaginarnajedinica kompleksnoga broja. Naredbom clear na početku rada interna varijabla iima svoju izvornu vrijednost, a kompleksni broj a ima ispravnu vrijednost.

    >>clear>> a=2+3*i

    a =2.0000 + 3.0000i

    Imena internih varijabla nisu zaštićena pa im se može dodijeliti neka druga vri-jednost. To se često događa upravo s varijablom i jer se to ime gotovo u pravilu koristiu funkcijama koje uključuju ponavljanja. Primjerice, sljedećom naredbom varijablai postaje eksternom varijablom s iznosom 5.

    >> i=5;

    Project3_zadnje_2010:Layout 1 14.01.2010 12:29 Page 11

  • Prioritet Operator Opis Primjer

    1. ( ) Zagrade grupiraju izraz i daju najveći prioritet. a*(b+c)

    2. ' Konjugiranje i transponiranje matrice (vektora). a'.' Transponiranje matrice (vektora). a.'

    Tablica 1.4.1. Popis aritmetičkih operatora po prioritetu izvođenja

    1.4. Operacije u Matlabu

    Matlab jest interaktivni program interpreterskoga tipa, što znači da neposrednoizvodi naredbe upisane iza naredbodavnog prompta. I M-funkcije i skripte mogu seneposredno izvoditi bez prethodnoga prevođenja. Matlabove se operacije mogurazvrstati u nekoliko skupina:

    – aritmetički operatori– relacijski operatori– logički operatori– naredbe odluke i ponavljanja– funkcije– Simulink.

    Rezultat se operacije sprema u naznačenu varijablu. Ako se ne naznači varijablaza spremanje rezultata, Matlab stvara varijablu pod nazivom ans (engl. answer) i unju pohranjuje rezultat. Iako po načinu izvedbe Simulink pripada u skupinu funkcija,zbog svojeg je velikog značaja za simulaciju sustava izdvojen kao zasebna cjelina.

    1.4.1. ARITMETIČKI OPERATORI

    Aritmetički operatori omogućuju aritmetičke operacije nad skalarnim i ma-tričnim varijablama. Popis operatora prema prioritetu izvođenja prikazan je u tablici1.4.1.

    Project3_zadnje_2010:Layout 1 14.01.2010 12:29 Page 23

  • Prioritet Operator Opis Primjer

    3. ^ Potenciranje matrice. a^3.^ Potenciranje među članovima matrica. a.^b

    4. * Množenje skalara ili matrica. a*b.* Množenje među članovima matrice. a.*b/ Desno dijeljenje matrica. b/a\ Lijevo dijeljenje matrica. b\a./ Dijeljenje među članovima. b./a

    5. + Zbrajanje. a+b- Oduzimanje. a-b

    nastavak tablice 1.4.1.

    Primjer 1.4.1. Prioriteti u aritmetičkim izrazima

    Primjer 1.4.2. Potenciranje među članovima matrice

    Iz tablice 1.4.1 razvidno da najviši prioritet imaju zagrade, a najniži zbrajanje ioduzimanje. Operacije se unutar izraza izvode od najvišeg prioriteta prema naj-nižem, a izrazi istog prioriteta izvode se od lijeva na desno.

    1. OSNOVE PROGRAMSKOGA SUSTAVA MATLAB24

    Zadatak

    Odrediti redoslijed operacija u izračunavanju aritmetičkoga izraza11+a(x+y)^3*2.

    Rješenje

    Redoslijed operacija:1. rez=x+y

    2. rez=rez^3

    3. rez=a*rez

    4. rez=rez*2

    5. rez=11+rez

    Samo je kvadratne matrice moguće potencirati skalarom, a za potenciranjemeđu članovima dviju matrica obje matrice moraju imati istu dimenziju, ali ne morajubiti kvadratne.

    >> a=[1 2;3 4]

    a =1 23 4

    >> b=[3 3;2 2]

    b =3 32 2

    Project3_zadnje_2010:Layout 1 14.01.2010 12:29 Page 24

  • Primjer 1.4.3. Primjena operatora dijeljenja za rješavanje sustava linearnihjednadžba

    1.4. OPERACIJE U MATLABU 25

    >> a.^b

    ans =1 89 16

    Množenje matrica provodi se po zakonima množenja matrica, što znači da ma-trice moraju imati odgovarajuće dimenzije. Dijeljenje matrica odgovara množenjuinverznom matricom (odnosno pseudoinverznom matricom kod nekvadratnih ma-trica). Desno dijeljenje matrica x=b/A daje rješenje jednadžbe x*A=b, tj. odgovaraizrazu x=b*A−1, a lijevo dijeljenje x=A\b daje rješenje jednadžbe A*x=b, tj. odgovaraizrazu x=A−1b.

    Zadatak

    Riješiti u Matlabu sljedeći sustav linearnih jednadžba:

    Rješenje

    Zadani sustav zapisan u matričnom obliku ima oblik:

    Rješenje se sustava dobije korištenjem operatora lijevog dijeljenja kako slijedi:

    >> A=[1 1 1; 2 -1 -1; 1 3 2];

    >> B=[1;2;2];

    >> x=A\B

    x =

    1.0000

    1.0000

    -1.0000

    Rješenje sustava iz primjera 1.4.3 moguće je dobiti i korištenjem naredbex=inv(A)*B, gdje je inv(A) inverzna matrica matrice A.

    Project3_zadnje_2010:Layout 1 14.01.2010 12:29 Page 25

  • 1.5. Funkcije u Matlabu

    Funkcije su vrlo važan dio Matlaba i upravo ga one najviše čine moćnim pro-gramskim sustavom. U Matlabu je izvedeno mnoštvo funkcija koje se prema podri-jetlu mogu razvrstati u tri skupine:

    – interne Matlabove funkcije

    – funkcije u Matlabovim paketima

    – korisnički definirane funkcije.

    Podrijetlo se funkcije može odrediti naredbom which iza koje se upiše imefunkcije. Internu funkciju Matlab zapiše, a za funkciju iz Matlabovih paketa i za ko-risnički definiranu funkciju ispiše mjesto na disku gdje je funkcija smještena. Podri-jetlo funkcije nije važno za korištenje jer se sve funkcije pozivaju na sličan način:

    >> ime_funkcije(arg1,arg2,...argn)

    U zagradi se navodi jedan argument ili više argumenata, što ovisi o funkciji. Svakiod tih argumenata mora biti ili konstanta ili varijabla definirana u Matlabovu radnomprostoru. Na taj se način mogu pozvati sve funkcije koje ili pripadaju skupini internihMatlabovih funkcija ili su spremljene na disku računala u direktoriju koji je navedenu Matlabovu putu pretraživanja ili su smještene u trenuta~nom direktoriju.

    Definirani se put pretraživanja može dobiti naredbom path. Ako se u put pre-traživanja želi dodati novi direktorij, moraju se provesti sljedeće naredbe:

    >> p=path;

    >> path(p,'novi_put');

    Prva naredba postojeći put pretraživanja pridružuje varijabli p, a druga naredbadefinira novi put pretraživanja tako da starom putu iz varijable p doda novi put pre-traživanja definiran znakovnim nizom novi_put. Definirani put pretraživanja ostaje

    Project3_zadnje_2010:Layout 1 14.01.2010 12:29 Page 33

  • Funkcija Sintaksa Opis

    sin y=sin(x) Sinus funkcija kuta u radijanima.

    cos y=cos(x) Kosinus funkcija kuta u radijanima.

    tan y=tan(x) Tangens funkcija kuta u radijanima.

    asin y=asin(x) Arkus-sinus funkcija (uz realni argument u području −1 do 1 rezultat je u području −π/2 do π/2).

    acos y=acos(x) Arkus-kosinus funkcija (uz realni argument u području −1 do1 rezultat je u području −π do 0).

    atan y=atan(x) Arkus-tangens funkcija (uz realni argument u području −∞ do∞ rezultat je u području −π/2 do π/2).

    Tablica 1.5.1. Trigonometrijske i ciklometrijske funkcije u Matlabu

    1. OSNOVE PROGRAMSKOGA SUSTAVA MATLAB34

    aktivan do izlaska iz Matlaba. Ako taj put želimo trajno pohraniti u računalo, nave-dene se naredbe moraju dodati u startup.m proceduru u direktoriju matlabroot\tool-box\local, gdje je matlabroot direktorij u koji je instaliran Matlab.

    Isti je učinak moguće postići naredbom addpath. Dodavanje direktorijanovi_put u put pretraživanja Matlaba postiže se i sljedećom naredbom:

    >> addpath('novi_put');

    Broj i vrsta raspoloživih funkcija u Matlabu ovisi o broju instaliranih paketa. No,već i standardni paketi sadrže velik broj funkcija među kojima se mogu izdvojiti samoneke osnovne, primjerice: elementarne matematičke funkcije, funkcije za obraduvektora i matrica, funkcije za obradu znakovnih nizova i funkcije za rad s polinomima.U nastavku se ukratko opisuju samo navedene osnovne funkcije, a sintaksu i namjenuostalih funkcija korisnik može saznati iz Matlabove elektroničke dokumentacijeuporabom naredbe help. Nadalje, obrazlaže se i postupak pisanja korisničkihfunkcija te se daju preporuke za poboljšanje i analizu njihovih performansi.

    1.5.1. ELEMENTARNE MATEMATIČKE FUNKCIJE

    Elementarne matematičke funkcije definirane su na području kompleksnih bro-jeva, a rezultate također daju u skupu kompleksnih brojeva. Argumenti mogu bititipa skalara, vektora ili matrica, a rezultat je varijabla istoga tipa i istih dimenzija kaoi ulazni argument. Prema tomu, kada se na matricu primjenjuje funkcija, kao rezultatnastaje matrica istih dimenzija kojoj su članovi rezultat primjene funkcije na pojediničlan matrice argumenta.

    1.5.1.1. Trigonometrijske i ciklometrijske funkcije

    Trigonometrijske i ciklometrijske funkcije definirane su na skupu kompleksnihbrojeva. Popis, sintaksa i opis trigonometrijskih i ciklometrijskih Matlabovih funkcijaprikazani su u tablici 1.5.1.

    Project3_zadnje_2010:Layout 1 14.01.2010 12:29 Page 34

  • 1.6. Grafičke funkcije u Matlabu

    Matlab omogućuje grafički prikaz rezultata, a osim toga posjeduje i niz funkcijaza opis slika, osi i prikazanih krivulja. Matlabom je moguće crtati dvodimenzionalne(2D) i trodimenzionalne (3D) grafičke prikaze. Osim toga u Matlabu postoji cijeliniz funkcija za grafički prikaz čija se sintaksa i primjena može vidjeti u Matlabovojelektroničkoj dokumentaciji uporabom naredbe help. U ovom se poglavlju opisujusamo osnovne funkcije za grafički prikaz podataka.

    1.6.1. DVODIMENZIONALNI GRAFIČKI PRIKAZ

    Za crtanje dvodimenzionalnih grafičkih prikaza služe naredbe plot, bar,stairs i stem. Naredba plot ravnom linijom spaja susjedne točke grafičkogaprikaza. Naredba bar daje stupčasti prikaz, a naredba stairs rubove stupčastogaprikaza. Naredba stem svaki podatak prikazuje uspravnom linijom s kružićem navrhu, pri čemu su duljine linija proporcionalne iznosima podatka. Kako sve četirinaredbe imaju identičnu sintaksu i identične opcije, sintaksa se i opcije prikazujusamo za naredbu plot:

    plot(x,y,'opcije').

    Ako se vektor x i znakovni niz opcija izostave, naredba prikazuje točke vektora yovisno o njihovu rednom broju. Ako je vektor x zadan, tada vektori x i y tvore nizuređenih parova točaka. Vektori x i y moraju imati isti broj redaka. Ako je y matricas istim brojem redaka kao i vektor x, naredba plot crta po jednu krivulju za svakistupac matrice y. Opcijama se određuju boja i tip linije, kako je prikazano u tablici 1.6.1.

    Iako se taj poziv najčešće koristi, naredba se plot može pozvati i navođenjemniza parova vektora x, y, od kojih svaki par određuje jednu krivulju. Takav poziv imaoblik:

    plot(x1,y1,x2,y2,x3,y3,...,'opcije')

    Project3_zadnje_2010:Layout 1 14.01.2010 12:29 Page 51

  • Oznaka Boja Oznaka Tip linijey žuta - puna linijam ljubičasta : točkasta linijac svjetlo plava -. točka crtar crvena -- isprekidanag zelenab plavaw bijelak crna

    Naredba Funkcijaclf Brisanje slike iz aktivnoga grafičkoga prozora.grid Crtanje koordinatne mreže na slici.zoom Mogućnost povećavanja dijela grafikona pomoću miša.hold Zadržavanje trenutne slike u aktivnom grafičkom prozoru i mogućnost da novi

    plot ne briše postojeći crtež već da oba crteža budu vidljiva.

    Tablica 1.6.2. Naredbe za doradu grafičkih prikaza

    Tablica 1.6.1. Opcije naredbe plot

    1. OSNOVE PROGRAMSKOGA SUSTAVA MATLAB52

    Naredba plot otvara novi grafički prozor i u njemu prikazuje sliku, a ako grafičkiprozor već postoji, prikazuje sliku u njemu.

    Crtanje se na logaritamskoj umjesto na linearnoj skali postiže primjenomfunkcija semilogx, semilogy ili loglog koje imaju istu sintaksu kao i funkcijaplot. Funkcija semilogx daje logaritamski grafički prikaz na apscisi i linearni naordinati, funkcija semilogy obratno, a funkcija loglog daje logaritamski prikaz naobjema osima.

    1.6.2. NAREDBE ZA DORADU GRAFIČKIH PRIKAZA

    Zornost se grafičkoga prikaza može popraviti dvjema naredbama: naredbom zadoradu prikaza i naredbom za upravljanje prikazom. Te su naredbe prikazane u tablici1.6.2.

    Sve se naredbe iz tablice odnose na aktivni grafički prozor. Naredbe grid, zoomi hold kod prvog poziva postavljaju svojstvo kojim upravljaju, a kod drugog ga pozivaponištavaju. Dodavanjem opcije on iza naredbe (tj. grid on, zoom on, holdon), svojstvo se uvijek postavlja, a dodavanjem opcije off (tj. grid off, zoomoff, hold off) svojstvo se uvijek uklanja.

    Otvaranje novog grafičkog prozora postiže se naredbom figure, dok naredbafigure(broj) aktivira grafički prozor s navedenim brojem.

    Project3_zadnje_2010:Layout 1 14.01.2010 12:29 Page 52

  • 2. Simbolički paket

    2.1. Uvod

    Dok je u prvom dijelu knjige opisano osnovno programsko okruženje Matlaba,u ovom se dijelu pozornost usmjerava opisu jednog Matlabova paketa koji jeosobito raširen među korisnicima. Naime, Matlab čine i brojne dodatne funkcijerazvrstane u tzv. pakete (engl. toolboxes) koji su organizirani prema područjimaprimjene. Kako iscrpno opisivanje svih paketa izlazi iz okvira ove knjige, zainte-resirani korisnici mogu potražiti podatke o svim paketima na mrežnoj straniciproizvođača http://www.mathworks.com. Od Matlabova paketa izdvojili smoSimbolički paket (engl. Symbolic Toolbox). Dva su razloga tomu odabiru. Prvo, taj jepaket koristan vrlo širokom krugu korisnika programskog sustava Matlab. Drugo, isam ga je proizvođač uključio u tzv. Matlab Suite sustav, zajedno s osnovnom jezgromMatlaba i Simulinkom.

    Simbolički paket omogućuje rješavanje problema općim brojevima. Rad se unjemu zasniva na simboličkim varijablama nad kojima se izvode simboličke funkcije.Simbolički paket sadrži veći broj simboličkih funkcija koje se mogu razvrstati usljedeće skupine:

    – osnovne funkcije,– funkcije matematičke analize,– funkcije linearne algebre,– funkcije za rješavanje jednadžbi,– integralne transformacije,– funkcije za pojednostavljenja simboličkih izraza,– grafičke funkcije te– specijalne funkcije i ostale funkcije.

    Project3_zadnje_2010:Layout 1 14.01.2010 12:29 Page 65

  • 2.2. Osnovne funkcije Simboličkog paketa

    Simboličke funkcije imaju istu sintaksu kao i numeričke funkcije, s bitnomrazlikom što su im rezultati matrice simboličkih izraza a ne matrice numeričkihvrijednosti. Funkcije se Simboličkoga paketa izvode nad varijablama koje suprethodno deklarirane kao simboličke ili su nastale kao rezultat funkcija i operacijanad simboličkim varijablama. Upravo funkcije za stvaranje simboličkih varijabla,zajedno s funkcijama za prikaz simboličkih izraza te funkcijama za pretvorbusimboličkih varijabla u numeričke varijable, čine skupinu osnovnih funkcija Sim-boličkoga paketa.

    2.2.1. STVARANJE SIMBOLIČKIH VARIJABLA

    Simboličke su varijable zasebna skupina varijabla u Matlabu koja se naziva symgrupom varijabla. Stvaraju se naredbom sym ili naredbom syms, a nastaju i kaorezultat simboličkih operacija i funkcija. Simboličke su varijable u Matlabovu radnomprostoru označene klasom sym object.

    2.2.1.1. Stvaranje simboličkih varijabla naredbom symNaredbom sym stvaraju se simbolički brojevi, varijable i objekti. Naredba sym

    ima sljedeću sintaksu:

    izl_var=sym(S)

    gdje je S numerički izraz ili string, a izl_var izlazna simbolička varijabla.

    Ako je argument S znakovni niz, rezultat izl_var jest simbolička varijablakojoj je sadržaj dani znakovni niz, a ako je S numerička matrica, rezultat je simboličkamatrica kojoj je sadržaj dana numerička matrica.

    Project3_zadnje_2010:Layout 1 14.01.2010 12:29 Page 67

  • Primjer 2.2.1. Pretvaranje numeričke matrice u simboličku matricu

    Primjer 2.2.2. Stvaranje simboličke matrice naredbom sym

    2. SIMBOLIČKI PAKET68

    >> b=[1 2 3; 4 5 6; 7 8 9]b =

    1 2 34 5 67 8 9

    >> bb=sym(b)bb =[ 1, 2, 3][ 4, 5, 6][ 7, 8, 9]

    >> whosName Size Bytes Classb 3x3 72 double arraybb 3x3 622 sym object

    Grand total is 27 elements using 694 bytes

    U navedenom je primjeru iz numeričke matrice b dimenzije 3×3 naredbom symstvorena simbolička matrica bb istoga sadržaja.

    >> a(2,2)=sym('a_22')

    a =

    [ 0, 0][ 0, a_22]

    >> a(1,1)=sym('a_11')

    a =

    [ a_11, 0][ 0, a_22]

    >> inv(a)

    ans =

    [ 1/a_11, 0][ 0, 1/a_22]

    >> whosName Size Bytes Class

    a 2x2 324 sym objectans 2x2 332 sym object

    Grand total is 32 elements using 656 bytes

    Project3_zadnje_2010:Layout 1 14.01.2010 12:29 Page 68

  • Primjer 2.3.1. Deriviranje simboličkog izraza

    2.3. Funkcije matematičke analize

    Simbolički paket sadrži sljedeće funkcije matematičke analize: deriviranje iintegriranje simboličkih izraza, izračunavanje graničnih vrijednosti (limesa) funkcija,aproksimacija funkcija MacLaurinovim ili Taylorovim redom, izračunavanje Jacobianmatrica funkcija po nezavisnim varijablama i zbrajanje simboličkih izraza.

    2.3.1. DERIVIRANJE SIMBOLIČKIH IZRAZA

    Deriviranje simboličkog izraza postiže se funkcijom diff:

    izl_izraz = diff(izraz,‘v’,n)

    gdje je izraz ulazni simbolički izraz koji se derivira, v znakovni niz naziva varijablepo kojoj se derivira, n red derivacije koja se izračunava, a izl_izraz izlaznavarijabla kojoj se pridružuje rezultat. U funkciji diff obvezan je samo argumentizraz, a druga su dva argumenta opcijska. Ako je izostavljen argument v, funkcijadiff izračunava n-tu derivaciju argumenta izraz po nezavisnoj varijabli kojuodredi pozivanjem naredbe findsym. Ako je izostavljen argument n, funkcijaizračunava prvu derivaciju.

    Iz sintakse funkcije diff lako je zaključiti da ona obavlja sljedeću matematičkuoperaciju:

    y =2*sin(x)*cos(omega*t)>> diff(y,'t')

    Project3_zadnje_2010:Layout 1 14.01.2010 12:29 Page 79

  • Primjer 2.3.2. Izračunavanje neodređenog i određenog integrala simboličkog izraza

    2. SIMBOLIČKI PAKET80

    ans =-2*sin(x)*sin(omega*t)*omega>> diff(y,'t',2)ans =-2*sin(x)*cos(omega*t)*omega^2>> diff(y,'x')ans =2*cos(x)*cos(omega*t)

    Primjer 2.3.1 pokazuje da je isti izraz moguće derivirati po različitim varijablama.U navedenom je primjeru izraz y prvo deriviran po varijabli t, a zatim po varijabli x.

    2.3.2. INTEGRIRANJE SIMBOLIČKIH IZRAZA

    Integriranje simboličkih izraza provodi se funkcijom int:

    izl_izraz = int(izraz,’v’,poc,kraj)

    gdje je izraz ulazni simbolički izraz koji se integrira, v naziv varijable po kojoj seintegrira, poc početna granica integracije, kraj krajnja granica integracije, aizl_izraz izlazna varijabla kojoj se pridružuje rezultat. U funkciji int obvezan jesamo argument izraz, a druga su tri argumenta opcijska. Ako je izostavljenargument v, funkcija int integrira argument izraz po nezavisnoj varijabli kojuodredi pozivanjem naredbe findsym. Ako su izostavljeni argumenti poc i kraj,funkcija int izračunava neodređeni integral, a ako su ti argumenti zadani, izračunavaodređeni integral u njima zadanim granicama.

    Iz sintakse funkcije int lako je zaključiti da ona obavlja sljedeću matematičkuoperaciju:

    y =2*sin(x)*cos(omega*t)>> int(y,'t')ans =2*sin(x)/omega*sin(omega*t)

    >> int(y,'t',0,10)ans =2*sin(x)/omega*sin(10*omega)

    >> syms a b>> int(y,'t',a,b)ans =2*sin(x)*(sin(omega*b)-sin(omega*a))/omega

    Project3_zadnje_2010:Layout 1 14.01.2010 12:29 Page 80

  • 2.4. Funkcije linearne algebre

    Simbolički paket sadrži niz funkcija za rad sa simboličkim matricama i vektorimate funkcije linearne algebre koje su izvedene u osnovnom dijelu Matlaba za rad snumeričkim vektorima i matricama. Slijedi prikaz nekih važnijih funkcija linearnealgebre, a cjelovit je popis dostupnih funkcija naveden u DODATKU na str. 117.

    2.4.1. ODRE\IVANJE ILI ZADAVANJE DIJAGONALE MATRICE

    Određivanje se dijagonale matrice ili stvaranje matrice sa zadanom dijagonalomizvodi funkcijom diag. Sintaksa je naredbe sljedeća:

    a=diag(b,k)

    gdje je b matrica kojoj se traži dijagonala ili vektor kojim se definira dijagonalamatrice, a rezultantni vektor koji sadrži dijagonalu matrice b ili stvorena matrica svektorom b kao dijagonalom, a k cjelobrojna konstanta koja određuje broj dijagonale(k=0 predstavlja glavnu dijagonalu, +n n-tu dijagonalu iznad glavne dijagonale, a–n n-tu dijagonalu ispod glavne dijagonale).

    a =[ a_11, a_12, a_13][ a_21, a_22, a_23][ a_31, a_32, a_33]

    >> diag(a)

    Primjer 2.4.1. Određivanje dijagonale matrice i stvaranje matrice sa zadanom dijagonalom

    Project3_zadnje_2010:Layout 1 14.01.2010 12:29 Page 85

  • 2. SIMBOLIČKI PAKET86

    ans =[ a_11][ a_22][ a_33]

    >> d=ans

    d =[ a_11][ a_22][ a_33]

    >> b=diag(d,1)

    b =[ 0, a_11, 0, 0][ 0, 0, a_22, 0][ 0, 0, 0, a_33][ 0, 0, 0, 0]

    >> b1=diag(d,-2)

    b1 =[ 0, 0, 0, 0, 0][ 0, 0, 0, 0, 0][ a_11, 0, 0, 0, 0][ 0, a_22, 0, 0, 0][ 0, 0, a_33, 0, 0]

    U primjeru je iz kvadratne matrice a dimenzija 3 × 3 određena glavna dijagonalai pridružena vektoru d, a zatim su iz vektora d stvorene matrice b i b1, pri čemumatrica b ima vektor d u prvoj dijagonali iznad glavne dijagonale, a matrica b1 udrugoj dijagonali ispod nje. Kako je vektor d dimenzije 3×1, matrica b je dimenzije4×4, a matrica b1 dimenzije 5×5.

    2.4.2. IZLUČIVANJE TROKUTASTIH MATRICA

    Iz zadane je matrice gornju trokutastu matricu moguće izlučiti funkcijom triu,a donju trokutastu matricu funkcijom tril:

    b=triu(a,k)b=tril(a,k)

    gdje je a matrica iz koje se izlučuje trokutasta matrica. U funkciji triu argument koznačava referentnu dijagonalu iznad koje se određuje gornja trokutasta matrica, au funkciji tril referentnu dijagonalu ispod koje se određuje donja trokutastamatrica. Ako je argument k u pozivu funkcije triu ili tril izostavljen ili je jednaknuli, referentna je glavna dijagonala, ako je k veći/manji od nule referentna je k-tadijagonala iznad/ispod glavne dijagonale.

    Project3_zadnje_2010:Layout 1 14.01.2010 12:29 Page 86

  • Primjer 2.5.1. Rješavanje sustava linearnih jednadžbi naredbom solve

    2.5. Funkcije za rješavanje jednadžbi

    Simbolički paket omogućuje analitičko rješavanje sustava algebarskih jednadžbii sustava diferencijalnih jednadžbi te simboličko izračunavanje inverzne funkcije ikompozicije funkcija.

    2.5.1. ANALITIČKO RJEŠAVANJE SUSTAVA ALGEBARSKIH JED-NADŽBI

    Analitičko se rješavanje sustava algebarskih jednadžbi izvodi naredbom solve:

    izl_izraz=solve(‘eq_1’,’eq_2’,…’eq_n’,’var_1’,’var_2’,…’var_n’)

    gdje su eq_1, eq_2, ..., eq_n simbolički izrazi koji predstavljaju n jednadžbisustava (mogu biti napisani kao simbolički izrazi ili kao znakovni nizovi kojipredstavljaju simboličke izraze), var_1, var_2, ... , var_n simboličkevarijable ili znakovni nizovi koji predstavljaju nazive n varijabla koje treba izračunatiiz jednadžbi, izl_izraz izlazna varijabla. Ako simbolički izrazi u sebi ne sadržeznak =, funkcija solve izjednačava ih s nulom. Izostavljanjem naziva varijabla kojese žele izračunati funkcija izračunava varijable koje može u jednadžbama prepoznatifunkcijom findsym.

    >> [x,y,]=solve('a*x+b*y=c1','c*x+d*y=d1','x','y')x =-(-d*c1+d1*b)/(a*d-c*b)

    Project3_zadnje_2010:Layout 1 14.01.2010 12:29 Page 91

  • 2.6. Integralne transformacije

    Integralnim se transformacijama diferencijalne jednadžbe i jednadžbe diferen-cija pretvaraju u algebarske jednadžbe. Najviše se koriste pri analizi signala idinamičkih sustava. Matlabov Simbolički paket raspolaže trima transformacijamafunkcija (Fourierova transformacija, Laplaceova transformacija i Z-transformacija)i njihovim inverznim transformacijama (inverzna Fourierova transformacija, inverznaLaplaceova transformacija i inverzna Z-transformacija).

    2.6.1. FOURIEROVA TRANSFORMACIJA I INVERZNA FOURIE-ROVA TRANSFORMACIJA

    Fourierova transformacija prevodi funkciju iz vremenskoga područja spodrazumijevanom nezavisnom varijablom x u frekvencijsko područje s podra-zumijevanom nezavisnom varijablom w prema izrazu:

    Fourierova se transformacija u Simboličkom paketu izračunava funkcijomfourier:

    F=fourier(f)

    gdje je f ulazna funkcija u vremenskom području, a F funkcija u frekvencijskompodručju dobivena Fourierovom transformacijom funkcije f. Ako se kao nezavisnavarijabla ulazne funkcije f u vremenskom području odabere neka varijabla u različitaod x (ulazna funkcija je f(u)), odnosno ako se kao rezultat želi dobiti funkcija F snezavisnom varijablom v različitom od w (rezultat je F(v)), potrebno ih je uključitikao drugi odnosno treći argument u funkciji fourier:

    Project3_zadnje_2010:Layout 1 14.01.2010 12:29 Page 95

  • Primjer 2.7.1. Pojednostavljenje rezultata množenja matrica funkcijom simple

    2.7. Pojednostavljenje i promjene zapisasimboličkih izraza

    Simbolički izrazi dobiveni kao rezultat operacija i funkcija nad simboličkimvarijablama obično nisu prikazani u najjednostavnijem mogućem obliku pa ih trebakratiti odnosno prikazati u jednostavnijem obliku da bi korisnicima bili razumljiviji.Isto tako izraze oblika polinoma moguće je prikazati u različitim oblicima uzfaktorizaciju ili izlučivanje varijabla.

    2.7.1. POJEDNOSTAVLJENJE SIMBOLIČKIH IZRAZA

    Osnovna funkcija za pojednostavljenje simboličkih izraza u Simboličkom paketujest funkcija simple:

    r_izraz=simple(izraz)

    gdje je izraz početni simbolički izraz koji se pojednostavljuje, a r_izrazrezultatntni simbolički izraz postupka pojednostavljenja. Funkcija simple provodisve postupke pojednostavljenja dostupne u Matlabu, a kao rješenje daje izraznajjednostavniji među svim izrazima koje je tijekom postupka pojednostavljenjadobila.

    a =[ a_11, a_12][ a_21, a_22]

    >> b=a*inv(a)

    Project3_zadnje_2010:Layout 1 14.01.2010 12:29 Page 99

  • 2.8. Grafičke funkcije Simboličkoga paketa

    Grafičke se funkcije Simboličkog paketa razlikuju od osnovnih Matlabovihgrafičkih funkcija po tome što izravno prikazuju simboličke funkcije umjestopodataka pohranjenih u vektore ili matrice. Tim je funkcijama omogućen grafičkiprikaz simboličkih funkcija u dvodimenzionalnom (2D) i trodimenzionalnom (3D)prostoru.

    2.8.1. PRIKAZI SIMBOLIČKIH FUNKCIJA U DVODIMENZIONAL-NOM PROSTORU

    Simbolički paket omogućuje prikaz simboličkih funkcija u dvodimenzionalnompravokutnom koordinatnom sustavu i u polarnom koordinatnom sustavu.

    2.8.1.1. Prikaz simboličkih funkcija u dvodimenzionalnom pravokutnom koordina-tnom sustavu

    Prikaz simboličke funkcije jedne varijable f(x) u dvodimenzionalnom pravo-kutnom koordinatnom sustavu postiže se funkcijom ezplot. Sintaksa pozivafunkcije ezplot ovisi o tome je li simbolička funkcija zadana u eksplicitnom,implicitnom ili parametarskom obliku.

    Ako je simbolička funkcija zadana u eksplicitnom obliku f(x), sintaksa je funkcijeezplot sljedeća:

    ezplot(f, [x_min, x_max]),

    koja prikazuje simboličku funkciju f(x)na intervalu vrijednosti varijable x defini-ranome vektorom [x_min, x_max]. Ako nije zadan drugi argument funkcije

    Project3_zadnje_2010:Layout 1 14.01.2010 12:29 Page 105

  • 3. Simulacije dinamičkih sustava u program-skom paketu Simulink

    3.1. Uvod

    Vladanje se dinamičkih sustava općenito opisuje diferencijalnim jednadžbama.Budući da se u vladanju većine dinamičkih sustava pojavljuju nelinearni odnosi, zaopis je njihova vladanja neophodno koristiti nelinearne diferencijalne jednadžbe.Primjenu analitičkih postupaka analize vladanja takvih sustava znatno otežava nepo-stojanje opće metodologije rješavanja nelinearnih diferencijalnih jednadžbi. Zbogtoga se analiza vladanja nelinearnih dinamičkih sustava najčešće provodi simulaci-jama na digitalnom računalu.

    U početku su se simulacije vladanja nelinearnih dinamičkih sustava provodile uopćim programskim jezicima, najčešće u svojedobno vrlo raširenom programskomjeziku FORTRAN. Kako je projektant sustava morao trošiti velik dio svojega vre-mena na programsku izvedbu raznih pomoćnih funkcija, s vremenom su se razvilirazni programski paketi specijalizirani za simulaciju dinamičkih sustava. Danas je natržištu svakako najzastupljeniji simulacijski programski paket Simulink koji je tvrtkaMathworks Inc. razvila kao nadogradnju programskom sustavu Matlab. Upravo jeneposredna komplementarnost s Matlabom omogućila Simulinku da postane stan-dardnim simulacijskim paketom, kako u akademskoj zajednici, tako i u industriji.

    Project3_zadnje_2010:Layout 1 14.01.2010 12:29 Page 123

  • prevođenje modela

    povezivanje modela

    računanje stanja i izlaza sustava u trenutnom koraku simulacije

    Slika 3.2.1. Faze izvođenja simulacije u Simulinku

    3.2. Simulacija dinamičkih sustava u Simulinku

    Simulink jest grafički programski paket koji za izvođenje simulacija dinamičkihsustava koristi Matlabovu matematičku ljusku. U Simulinku je izvedena biblioteka go-tovih grafičkih blokova pomoću kojih se vrlo jednostavno u grafičkom editoru možeizgraditi simulacijski model gotovo svakog dinamičkog sustava. Ako primjerice kori-sniku treba neki blok koji ne postoji u biblioteci, može napisati vlastiti blok i to kaoMatlabovu M-funkciju ili kao funkciju u programskom jeziku C/C++ (S-funkcija).Shema se simulacijskoga modela izrađenog u Simulinku sastoji od grafičkih blokovapovezanih linijama, čime se zorno realiziraju jednadžbe koje opisuju analizirani di-namički sustav. Kada izradi shemu simulacijskoga modela, korisnik ulazi u sam procesizvođenja simulacije. Za to mu Simulink pruža svu potrebnu podršku i omogućujemu da uspješno i razmjerno jednostavno simulira i najsloženije dinamičke sustave.

    3.2.1. IZVO\ENJE SIMULACIJE U SIMULINKU

    Izvođenje se simulacije izrađenog simulacijskog modela odvija u tri faze, kao štoje prikazano na slici 3.2.1: prevođenje simulacijskoga modela, povezivanje simu-lacijskoga modela i rješavanje simulacijskoga modela.

    Project3_zadnje_2010:Layout 1 14.01.2010 12:29 Page 125

  • 3.3. Osnovne tehnike rada u Simulinku

    U prethodnome je poglavlju opisan proces izrade i izvođenja simulacijskogamodela u Simulinku, a u ovome se poglavlju opisuju osnovne tehnike rada uSimulinku neophodne za provedbu samoga procesa simulacije. Usvajanje tehnikaopisanih u ovome poglavlju nužno je za pokretanje procesa simulacije u Simulinku,ali je istodobno i dovoljno za simuliranje jednostavnijih dinamičkih sustava, što jeilustrirano dvama primjerima na kraju poglavlja.

    3.3.1. OSNOVNE AKCIJE UNUTAR SIMULINKA

    3.3.1.1. Pokretanje Simulinka

    Simulink se pokreće izravno iz Matlabova naredbodavnog prozora izvo|enjemnaredbe:

    >>simulink

    ili klikom miša na ikonicu Simulinka u Matlabovu osnovnom prozoru, slika 3.3.1.

    Slika 3.3.1. Ikonica za pokretanje Simulinka

    Project3_zadnje_2010:Layout 1 14.01.2010 12:29 Page 131

  • 3.4. Napredne tehnike rada u Simulinku

    U prethodnom je poglavlju opisano osnovno korištenje Simulinka i prikazani susimulacijski postupci na dvama jednostavnim primjerima. Međutim, kada se simuli-raju složeni dinamički sustavi, moraju se koristiti i neke naprednije tehnike koje pružaSimulink. U nastavku se najprije opisuje razlaganje složenih sustava na podsustave,zatim se rješavaju problemi algebarskih petlji, otkrivaju prolazi signala kroz nulu tesimuliraju tzv. kruti dinamički sustavi. Na kraju se poglavlja daju preporuke za odabirnumeričkog postupka rješavanja diferencijalnih jednadžbi te mogućnosti upravljanjasimulacijom iz Matlabova naredbodavnog prozora.

    3.4.1. RAZLAGANJE SUSTAVA NA PODSUSTAVE

    U Simulinku postoje dva tipa podsustava: virtualni (engl. virtual) podsustav i ne-djeljivi (engl. atomic) podsustav. Osnovna je karakteristika virtualnih podsustava štone utječu na redoslijed proračuna signala već se njihovim korištenjem simulacijskashema prikazuje kao skup međusobno povezanih podsustava te na taj način postajepreglednijom, što je važno pri modeliranju složenih sustava. Nedjeljivi su podsustavielementarni blokovi koji se unutar Simulinka izvršavaju kao cjelina. Razvidno je dase, s jedne strane, grupiranjem blokova u virtualne podsustave ne mijenja redoslijedizvođenja blokova, a da, s druge strane, korištenje nedjeljivih blokova može utjecatina redoslijed izvođenja blokova.

    3.4.1.1. Stvaranje podsustava

    Najjednostavniji način stvaranja podsustava jest označavanje dijela simulacijskesheme i odabir opcije Edit/Create Subsystem, kako je prikazano na slici 3.4.1.Na slici 3.4.2 prikazan je stvoreni podsustav.

    Project3_zadnje_2010:Layout 1 14.01.2010 12:29 Page 141

  • Kazalo

    !md 20%komentar 42

    A

    abs 35acos 34acosh 35addpath 34algebarska petlja 146

    – s višestrukim rješenjem 147all 37alociranje memorije 45analiza performansi 48angle 36any 37asin 34asinh 35atan 34atan2 35atanh 35

    B

    bar 56biblioteka blokova 125, 132, 133, 134, 142

    – Bus Creator 134– Bus Selector 134– Constant 134– Demux 134– Discrete-Time Integrator 134– Gain 134

    – Sum 134– In1 134– Integrator 134, 150– Logical Operator 134– Mux 134– Product 134– Relational Operator 134– Saturation 134, 150– Scope 134– Unit Delay 135– Switch 135, 150– Subsystem 135, 142, 150– Atomic Subsystem 142– Enabled Subsystem 134– Triggered Subsystem 143– Enabled and Triggered Subsystem 143– Enable 143– Trigger 143– Transfer Fcn 146– IC 148– Memory 148, 149– Abs 150– Backlash 150 – Dead Zone 150– From Workspace 150– Hit Crossing 150– If 150– MinMax,Relay 150– Sign 150– SignalBuilder 150– Step 150– Switch Case 150

    Project3_zadnje_2010:Layout 1 14.01.2010 12:30 Page 167

    /ColorImageDict > /JPEG2000ColorACSImageDict > /JPEG2000ColorImageDict > /AntiAliasGrayImages false /CropGrayImages true /GrayImageMinResolution 150 /GrayImageMinResolutionPolicy /OK /DownsampleGrayImages true /GrayImageDownsampleType /Bicubic /GrayImageResolution 150 /GrayImageDepth -1 /GrayImageMinDownsampleDepth 2 /GrayImageDownsampleThreshold 1.50000 /EncodeGrayImages true /GrayImageFilter /DCTEncode /AutoFilterGrayImages true /GrayImageAutoFilterStrategy /JPEG /GrayACSImageDict > /GrayImageDict > /JPEG2000GrayACSImageDict > /JPEG2000GrayImageDict > /AntiAliasMonoImages false /CropMonoImages true /MonoImageMinResolution 1200 /MonoImageMinResolutionPolicy /OK /DownsampleMonoImages true /MonoImageDownsampleType /Bicubic /MonoImageResolution 1200 /MonoImageDepth -1 /MonoImageDownsampleThreshold 1.50000 /EncodeMonoImages true /MonoImageFilter /CCITTFaxEncode /MonoImageDict > /AllowPSXObjects true /CheckCompliance [ /None ] /PDFX1aCheck false /PDFX3Check false /PDFXCompliantPDFOnly false /PDFXNoTrimBoxError true /PDFXTrimBoxToMediaBoxOffset [ 0.00000 0.00000 0.00000 0.00000 ] /PDFXSetBleedBoxToMediaBox true /PDFXBleedBoxToTrimBoxOffset [ 0.00000 0.00000 0.00000 0.00000 ] /PDFXOutputIntentProfile (None) /PDFXOutputConditionIdentifier () /PDFXOutputCondition () /PDFXRegistryName () /PDFXTrapped /False

    /SyntheticBoldness 1.000000 /Description >>> setdistillerparams> setpagedevice