Matlab, Simulink, Toolboxok

Embed Size (px)

Citation preview

38

Lantos: Szablyozstechnika gyakorlatok

III. MATLAB, SIMULINK, ToolboxokA MATLAB egy interaktv krnyezet tudomnyos s mrnki szmtsok, szimulci s adatok vizulis megjelentse szmra. SIMULINK egy program dinamikus rendszerek szimulcijra. MATLAB, SIMULINK s Handle Graphics a Math Works Inc. cg vdett mrki. MATLAB a matrix laboratory elnevezsb l szrmazik, s azrt szletett, hogy knny s intelligens hozzfrst biztostson a korbban LINPACK s EISPACK nven kifejlesztett szoftverekhez, amelyek a mtrix szmtsi (lineris algebrai) szoftverek legfejlettebb forminak tekinthet k. MATLAB egy mtrix-orientlt nyelv, amelynek alapeleme a ktdimenzis (tglalap-szer ) mtrix, amelynek termszetesen specilis esete a skalr (egyelem mtrix) s a sor- vagy oszlopvektor (egy sorbl, vagy egy oszlopbl ll mtrix). A mtrix elemei automatikusan 8-byte szles double vltozk, a nyelv ms vltoz tpust nem ismer, a ciklus vltozk is double tpusak. Az elemek IEEE szabvny szerinti double brzolst feltteleznek, ami lehet v teszi, hogy a vals szmok mellett 3 kitntetett kd is brzolhat legyen: NaN, inf, -inf. Ezek rendre a definilatlan rtket (NaN, not a number), valamint a pozitv (inf) s negatv (-inf) vgtelent jellik. Ezekkel bizonyos korltozsok mellett m veletek is vgezhet k. A mtrix elemeinek indexelse a soron s oszlopon bell 1-t l kezd dik. Definilhat az res mtrix is, amelynek jellse [] . A mtrixok elemeit [] zrjelek kztt sorfolytonosan adhatjuk meg. Az elemeket trkz (space) vagy vessz (,) vlaszthatja el a soron bell. A sor vgn j sor (enter) vagy pontosvessz (;) llhat, az utols sor utols elemt kzvetlenl a ] zrjel kveti. Ha a gpels sorn az sszetartoz szintaktikai egysgeket egy sorban nem tudjuk megadni (a mtrix sornak elemeit, vagy az utastst, vagy egy fggvny paramtereit, stb.), akkor (item hatron, pl. vals szm vagy vltoz nv utn), hrom pontot () tve a sor vgre, a mtrix, utasts stb. folytathat az j sorban. A mtrix egy absztrakt eleme lehet egy teljes mtrix is, gy nehzsg nlkl definilhatunk s kezelhetnk blokkmtrixokat is. Vilgos, hogy hasznlhatunk vltozkat is, amelyek szintn mtrixok. A MATLAB a (vltoz, fggvny) nevekben megklnbzteti a kisbet t a nagybet t l. A mtrixok elemeire indexeikkel hivatkozunk, de skalr vltoz esetn nem kell indexet megadni, s vektor esetn pedig csak 1 index megadsa szksges. Az indexek helyn vltozk is llhatnak. A mtrix elemeinek megadsakor az elemet kijell indexeket gmbj zrjelben (), vessz vel elvlasztva adjuk meg, pl. A(1,2) , a vagy v (2) . Egyszerre egy mtrixblokkot is kijellhetnk, amely az eredeti mtrixbl gy keletkezik, hogy megmondjuk, mely sorokbl s oszlopokbl kell kivenni a mtrixblokk elemeit, pl. A([2,4], [1,3]) . Ilyenkor az elemet definil indexpr helyn egy-egy vektort adunk meg, ahol az els vektorban ll szmok

MATLAB, SIMULINK, Toolboxok

39

mondjk meg. mely sorokbl szelektlunk, s a msodik vektorban ll szmok mondjk meg, mely oszlopokbl szelektlunk. A kijellt sorok s oszlopok tallkozsi helyn ll elemek adjk az eredmny blokkmtrixot. Specilisan, ha a valamelyik vektor nulla elemet is tartalmaz (mivel az indexels 1-t l indul, ezrt a 0 index illeglis lenne), akkor a vektor nemnulla elemeinek 1 rtk nek kell lennik, s ekkor az 1 rtk elemek indexei jellik ki a kivlasztand sorokat vagy oszlopokat. Ezrt egy mtrix nemnulla sorai vagy oszlopai knnyen kiszelektlhatk a MATLAB szolgltatsai segtsgvel, pl. B = A(:, any ( A)) kiszelektlja az A mtrix nemnulla oszlopait s beteszi a B mtrixba. Ltezik egy rvidtett kijellsi lehet sg is. Ha a vektor helyre kett spontot tesznk, akkor az els vektor helyn a mtrix minden sort, a msodik vektor helyn pedig mindegyik oszlopt jelljk ki, pl. A(:, [1,3]) illetve A([2,4], :) . Brmelyik vektor helyn megadhatunk egy intervallumot is gy, hogy a kezdete s vge kz kett spontot tesznk, pl. A(1 : 3, 2) illetve A(1, 2 : 4) . Brmelyik vektor helyn megadhatunk egy ekvidisztns lpskz sorozatot is gy, hogy megadjuk a kezd indexet, majd kett spont utn a lpskzt, majd jabb kett spont utn a fels index korltot, pl. A(:, 4 : 1 : 1) . Lehetsges a mtrixot oszlopfolytonosan egy hossz vektorba kiterteni, pl. b = A(:) rvn. Ilyenkor a hossz vektorban az eredeti mtrix els oszlopt a msodik oszlop, azt a harmadik oszlop stb. kveti. Ha viszont az rtkad utasts baloldaln ll A(:) , amit a jobboldalon egy vele sszhangban lv hosszsg hossz vektor kvet, akkor az el bbi fordtottja jtszdik le, az j mtrix mrete az A mtrix aktulis mretnek megfelel lesz, de elemei a b hossz vektorbl llnak majd el A(:) = b esetn. Vilgos, hogy ez a mtrixok knny tstrukturlst teszi lehet v. Abban a specilis esetben, ha az rtkad utasts jobboldaln a gmbj zrjelben egyetlen mtrix szerepel, pl. b = A(L) , ahol L s A mrete azonos, tovbb L elemei csak 0 vagy 1 rtk ek lehetnek, akkor rendre megtrtnik L elemeinek vizsglata az oszlopok sorrendjben, s az oszlopokban az 1 rtk elemek kijellse, majd az A ugyanolyan helyen ll elemeinek kiemelse s elhelyezse a b hossz vektorban. A mtrixok kztt m veletek definilhatk, mint az sszeads, kivons, szorzs, transzponls (ez azonban komplex elem mtrix esetn a konjuglt komplex transzponltja), ktfle oszts: baloszts (X=A\B az AX=B megoldsa), jobboszts (X=B/A az XA=B megoldsa), hatvnyozs (ha p>1 egsz, akkor A^p ismtelt szorzssal kpz dik, klnben A^p=V D.^p/V, ahol [V,D]=eig(A)), elemenknti szorzs (X=A . B), elemenknti oszts (X=A./B) s elemenknti hatvnyozs (X=A.^B). A standard fggvnyek (sin, cos, sqrt, exp, log, log10 stb.) s elemi matematikai fggvnyek (fix, floor, ceil, round, rem, real, imag, conj, abs, angle, sign stb.) elemenknt hajtdnak vgre, ms

40

Lantos: Szablyozstechnika gyakorlatok

standard fggvnyek a mtrix oszlopain hajtdnak vgre (pl. max illetve min egy sorvektorral tr vissza, amelynek elemei az oszlopokhoz tartoz maximlis illetve minimlis elemet tartalmazzk). Vannak azonban mtrixfggvnyek is, amelyeknek a neve 'm' bet re vgz dik (expm, logm, sqrtm), ezek argumentuma s rtke mtrix. Vannak specilis mtrixok, gy pl. az egysgmtrix, zeromtrix, tiszta 1-elem mtrix megadsra rendre eye(n), zero(n,m), ones(n,m) szolgl. Generlhatk vletlenszm-elem mtrixok egyenletes vagy normlis eloszls szerint a rand(n,m) s randn(n,m)fggvnyekkel. A vletlenszm genertor definit kezd rtkre llthat be, ami a programfejlesztseknl hasznos lehet, pl. randn('seed',0) alaphelyzetbe lltja a normlis eloszls szerinti vletlenszm genertort. A megszokott mdon hasznlhatk feltteles utastsok (if, else) s szervezhet k ciklusok (for, while). Lteznek relcis s logikai fggvnyek (any, all, find, exist, isnan, finite, isempty, isstr, strcmp). Utastsok .m fjlba foglalhatk, s a parancs hatsra vgrehajthatk. Kialakthatk a szoksos mdon fggvnyek .m fjlban a function alapsz utn, s meghvhatk a nvvel paramtereket tadva neki. A nyomkvetst .m fjlban pause, .m fjlban keyboard utasts tmogatja. A tipikus lineris algebrai s jelfeldolgozsi feladatok megoldst professzionlis algoritmusokat hasznl specilis fggvnyek tmogatjk, gy inv(A) a mtrix invertlst, a baloszts s/vagy jobboszts a lineris egyenletrendszer megoldst, [V,D]=eig(A) a sajtvektor/sajtrtk szmtst, pinv(A) a Moore-Penrose pszeudoinverz s [U,S,V]=svd(A) a szingulris rtk felbonts szmtst vgzi el. A rendszermodellezst s szimulcit a Simulink blokkorientlt nyelv tmogatja. A klnbz szakterletek jelfeldolgozsi s tervezsi feladatait szmos MATLABra pl toolbox segti, amelyek kzl nhnyat felsorolunk: Control System Signal Processing Optimization System Identification Fuzzy Logic Neural Network Image Processing Robust Control Extended Symbolic Math Real-Time Workshop

MATLAB, SIMULINK, Toolboxok

41

A kvetkez kben bevezetst adunk a MATLAB, Simulink s Control System Toolbox hasznlatba.

42

Lantos: Szablyozstechnika gyakorlatok

Bevezets a MATLAB s a Control System Toolbox hasznlatbaMATLAB alapok - a parancs ablak (command window)A Matlab elindtsakor a parancs ablak (Command Window) jelenik meg az un. Matlab prompt-tal: (>>)

Commands to get started: intro, demo, help help Commands for more information: help, whatsnew, info, subscribe Rgtn ismerkedjnk meg legfontosabb paranccsal. Ez a help. Brmely utastsrl vagy parancsrl informcit nyerhetnk, ha begpeljk: >>help utasits_nv gy mg a help parancs hasznlatrl is kaphatunk eligaztst. Az intro, expo, demo parancsok segtsgvel indthatjuk el a Matlab beptett oktat, illetve demonstrcis clokat szolgl programjait. A parancs ablakban vgrehajthatunk egyszer matematikai m veleteket: >>sqrt(4*9) ans = 6 Az sqrt(x) x ngyzetgykt szmtja. Az ans (ANSwer) a Matlab egy specilis, beptett vltozja, rtke mindig a legutols parancs vgrhajtsakor keletkezett eredmny, ha a legutols parancs nem tartalmazott rtkadst. A Matlab egyb, fontosabb beptett vltozi: pi=3.14159265358979 j=i=sqrt(-1) eps=2.220446049250313e-16 - a numerikus felbonts finomsga 1.0 kzelben.

MATLAB, SIMULINK, Toolboxok

43

Az i s j vltozk defincijbl ltszik, hogy a Matlab komplex szmokat is kpes kezelni. Pldul: >>sqrt(-9)+3 ans = 3.0000 + 3.0000iMost lssunk egy rtkad utastst. FIGYELEM!!! A Matlab klnbsget tesz nagy s kisbet k kztt.

>>a=5 a = 5 Ha nem szeretnnk, hogy a Matlab minden utasts vgrehajtsa utn beszmoljon az eredmnyr l, akkor az utasts utn tegynk ;-t. Egy vltoz rtkt egyszer en lekrdezhetjk, nevnek begpelsvel (persze ssnk entert). A Matlab bels szmbrzolsa igazodik a megfelel IEEE szabvnyhoz. Ez azt jelenti, hogy lehet sg van a mnusz s plusz vgtelen (-inf, inf) hasznlatra. Ha egy m velet a Matlab szmra rtelmezhetetlen, akkor az eredmny NaN (Not a Number). Pldul >>6/0 Warning: Divide by zero ans = inf >>inf/inf ans = NaN

44

Lantos: Szablyozstechnika gyakorlatok

A Matlab szleskr hasznlhatsgnak titka, hogy a mtrixokkal ugyan olyan knnyen vgezhetnk m veleteket, mint skalrokkal. Brmely vltoz rtke (komplex elem ) mtrix is lehet. >>A=[1 2; 3 4] A= 1 3 2 4

Lthat, hogy a mtrix ltrehozsakor az oszlop elemit szkzzel (lehet ','vel is), a sorokat pedig ';'-vel vlasztjuk el egymstl. Ne feledkezznk meg a [ ] zrjelekr l. Teht egy sorvektort pldul a >>b=[1 2]; utastssal hozhatunk ltre. (A Matlab most nem beszlt vissza, hiszen az utasts vgre kitettnk a ';'-t.) Termszetesen hivatkozhatunk egy mtrix (vagy vektor) brmelyik elemre, sorra vagy oszlopra, illetve blokkjra. FIGYELEM!!! A sorok s oszlopok indexelse egyarnt 1-t l indul! Nhny plda: >>A(1,2) ans = 2 >>A(2,:) ans = 3 >>A(:,1) ans = 1 3 Nagyobb mtrixnl mindezt tovbb bonyolthatjuk. 4 % az els oszlop % a msodik sor % az els sor msodik eleme

MATLAB, SIMULINK, Toolboxok

45

b-t s A-t knnyedn sszeszorozhatjuk. >>A*b ??? Error using ==> * Inner matrix dimensions must agree. De nem gy! A helyes sorrendben: >>b*A ans = 7 vagy pedig >>A*b' ans = 5 11 ahol ' (aposztrf) a transzponlt kpzsnek opertora. Adott mtrix determinnsnak, inverznek, sajt rtkeinek s szingulris rtkeinek szmtsra rendre a det, inv, eig, svd utastsok szolglnak. Pldul az A mtrix sajtrtkei az albbiak: >>eig(A) ans = -0.3723 5.3723 Egy vektor vagy mtrix dimenziinak lekrdezshez a length s a size utastsokat hasznlhatjuk.>>length(b')

10

ans =

46

Lantos: Szablyozstechnika gyakorlatok

2 >>size(A) ans = 2 2

Termszetesen egyb fggvnyeknek is lehetnek mtrixok az argumentumai. Egyes mtrix- s vektortpusokra gyakran lehet szksgnk s ezek el lltsa f leg nagy sor- s oszlopszm esetn igen fradsgos lenne a fenti mdszerekkel. Ezrt erre kln utastsok llnak rendelkezsre. Lnyeges mg megemlteni, hogy a Matlab-on bell klnleges szerep tulajdonthat a sorvektoroknak. Minden sorvektorhoz hozzrendelhet ugyanis egy olyan egyvltozs polinom, melynek egytthati egy sorvektor elemei. Teht pldul a p=[2 3 1 4] sorvektorhoz a

2 x 3 + 3x 2 + x + 4polinomot rendeljk hozz. A fentiekb l ltszik, hogy a polinom legmagasabb hatvny tagjnak egytthatja a sorvektor els eleme, mg a konstans tag az utols eleme. Egy n-ed fok polinom meghatrozshoz kvetkezskpp egy n+1 elem sorvektor szksges. A Matlabban a polyval(p,t) utasts szolgl a p sorvektorral adott polinom x=t helyen felvett rtknek szmtshoz. >>polyval(p,3) ans = 88 A p polinom derivltjt a polyder(p) utastssal szmthatjuk. >>polyder(p) ans = 6 6 1

MATLAB, SIMULINK, Toolboxok

47

Termszetesen kiszmolhatjuk kt polinom szorzatt is. Erre a conv(p,q) utasts szolgl. Kett nl tbb polinom sszeszorzsakor tbb conv utastst kell egymsba gyazni. Emltsnk meg mg nhny utastst, melyekre szksgnk lehet. A Matlab termszetesen fejben tartja az sszes ltrehozott vltozt, de mi erre nem biztos, hogy kpesek vagyunk. A who illetve a whos utastsok segtsgvel kilistztathatjuk az sszes hasznlatban lv vltozt. (A whos utasts rszletesebb listt ad.) Adott vltoz trlsre a clear vltoz_nv, az sszes vltoz trlsre pedig a clear all utasts szolgl. Ha munknkat befejeztk, az eredmnyt tartalmaz vltoz(kat) elmenthetjk ks bbi felhasznls cljra. Erre a save utasts szolgl. Pldul a save result A ba result.mat llomnyba menti el az A s b vltozkat. A save utastssal elmentett vltozkat a load utastssal tlthetjk be. Itt a vltozok neveit nem kell megadni. A

load resulta result.mat llomnyba tett vltozkat tlti be. Etmenthetjk a teljes munkaterlet tartalmt is (sszes ltrehozott vltoznkat). Ekkor a save utasts utn nem runk vltoznevet, csak az llomny nevt. Ha ez utbbit is elhagyjuk, akkor vltozink automatikusan a matlab.mat llomnyba kerlnek. (Hasonl eredmnyre vezet ha a parancs ablak File menjnek Save Workspace As parancst vlasztjuk.)

A Matlab grafikus lehet sgeiA Matlab lehet sget ad kt- s hromdimenzis grafikai objektumok megjelentsre. Mi most csak a ktdimenzis megjelentssel foglalkozunk. Ennek alapvet eszkze a plot(x,y) utasts. Az utasts segtsgvel az aktulis grafikus ablakba (ha ilyen egyltaln nincs, akkor a plot utasts ltrehoz egyet) egy grbt rajzolhatunk. A grbe gy keletkezik, hogy a skban [x(i); y(i)] koordintkkal adott pontokat a Matlab egyenes szakaszokkal sszekti.>>x=0:0.1:2*pi; >>y=sin(x); >>plot(x,y);

48

Lantos: Szablyozstechnika gyakorlatok

1 0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8 -1

0

1

2

3

4

5

6

7

A plot utastssal tbb grbt is megjelenthetnk, vltoztathatjuk a szneket s a grbk tpusait (szaggatott, pontozott, folytonos, stb.). Ezekkel a lehet sgekkel kapcsolatban lsd a plot utasts helpjt (help plot). A grafikont s a tengelyeket feliratokkal lthatjuk el. Erre a title, xlabel, ylabel utastsok szolglnak. Vett vonalakat a grid utastssal rajzoltathatunk ki. gy feldsztve az albbi brt kapjuk:abra cime - 1. abra 1 0.8 0.6 0.4 y tengely felirata 0.2 0 -0.2 -0.4 -0.6 -0.8 -1 0 1 2 3 4 x tengely felirata 5 6 7

A grafikonok tetsz leges rszt kinagythatjuk. Ehhez a zoom funkcit kell bekapcsolni a zoom on utasts segtsgvel. Ekkor az aktulis grafikus ablakban a

MATLAB, SIMULINK, Toolboxok

49

kurzor jobbgombjnak segtsgvel jellhet ki a nagytand terlet. A nagyts funkcit a zoom off utastssal lehet kikapcsolni, az eredeti grafikont pedig a zoom out utastssal kaphatjuk vissza. Megjegyezzk, hogy a zoom hasznlatakor j pontok nem keletkeznek a grafikonon, teht elg kzelr l nzve csak egyeneseket latunk. Ha azt szeretnnk, hogy egy j plot utasts ne trlje ki eddigi grafikonunkat, akkor j grafikus ablakot kell ltrehoznunk. Erre a figure utasts szolgl. Minden ltrehozott grafikus ablakhoz tartozik egy (pozitv egsz) szm. Ha tbb grafikus ablak kzl szeretnnk kivlasztani egyet, mondjuk a kvetkez plot utastsunk szamara, akkor azt a figure(n) utastssal tehetjk, ahol n az aktivizlni kvnt grafikus ablak szma. Egy adott grafikus ablakot vzszintesen s fgg legesen is tbb rszre oszthatunk s az gy keletkezett rszeket kln, kln kezelhetjk. Adott grafikus ablak ilyen felosztsra a subplot(x,y,z) utasts hasznlhat. x s y hatrozza meg, hogy az ablakot hny sorra s hny oszlopra osztjuk, z azt mutatja meg, hogy hnyadik kis ablak lesz ppen az aktulis grafikus kimenet, amelyre a plot utasts (vagy brmely ms grafikai utasts) vonatkozik. Ha pldul a 2. sor 1. oszlopban lv ablakocskra szeretnnk a grafikus kimenetet irnytani s a grafikus ablakot 2 oszlopra osztottuk fel, akkor z-t 2*1+1=3-ra kell lltani.

a b ra c im e - 1 . a b ra 1 y teng. felirata

0

-1

0

2 4 6 x te n g e ly fe lira ta

8

bra hozzfrhet v ttele ms alkalmazsok szmraA Windows alatt fut alkalmazsok szamara az brt a vglapon elhelyezve tehetjk hozzfrhet v. gyeljnk arra, hogy ilyenkor a grafikus ablak Options menjben az invert background tulajdonsgot lltsuk be, mert klnben az bra httere fekete marad s ez nyomtatskor nem vezet jra. Egyb formtumokban is elmenthet az brnk ha a Matlab print utastst hasznljuk. A vlaszthat formtumokat tekintve lsd mag a print utasts help-jt (help print).

50

Lantos: Szablyozstechnika gyakorlatok

Az .m kiterjeszts llomnyokNumerikus mdszerek hasznlatakor gyakran van szksg iteratv szmtsok elvgzsre s nagy mennyisg adathalmaz kezelsre. Nyilvnval, hogy ez nehzkes lenne a parancs ablakot hasznlva, egyms utn begpelve a szksges utastsokat. E helyett hasznlhatjuk az un. M llomnyokat. Ezek szveges llomnyok, melyek Matlab utastsokat tartalmaznak. A szveges llomnyokat nevk azonostja. Adott llomny nevt (kiterjeszts nlkl) a parancs ablakban utastsknt kiadva a Matlab a megfelel szveges llomny (melynek kiterjesztse .m kell, hogy legyen - innen az M llomny elnevezs) utastsait egyms utn rtelmezi s vgrehajtja. Az .m llomnyokban lehet sg van ciklusok szervezsre, utastsok feltteles vgrehajtsra s egyb programozsi trkkk bevetsre is. M kiterjeszts llomnyainkat brmely, szveges (txt) llomny ltrehozst tmogat szvegszerkeszt segtsgvel ltrehozhatunk, de hasznlhatjuk a Matlab beptett szerkeszt jt is. (Ez utbbi a Notepad nmileg mdostott vltozata.) A Matlab beptett szerkeszt jhez hozzfrhetnk a parancs ablak File menjben. j M llomny ltrehozshoz vlasszuk a New almen M-file opcijt, mr ltez M llomny megnyitshoz pedig az Open M-file parancsot. Nem mindegy, hogy hova mentjk el M llomnyainkat. A Matlab csak azokat az llomnyokat kpes megtallni, amelyek vagy az ppen aktulis munkaknyvtrban, vagy a matlabpath vltozban felsorolt knyvtrak egyikben van. Javasolhat, hogy a sajt M llomnyok (s fggvnyek) a ..\matlab\toolbox\local alknyvtrban vagy egy kln erre a clra ltrehozott alknyvtrban kerljenek elhelyezsre. Ha kln alknyvtrt hozunk ltre akkor azt a matlabrc.m llomnyban adjuk hozza a matlabpath vltozhoz. A matlabrc.m llomny a ..\matlab\toolbox\local alknyvtrban tallhat. Ez egy olyan specilis M llomny, amely a Matlab indtsakor automatikusan vgrehajtdik. Ez pp aktulis munkaknyvtrat a cd parancs segtsgvel vltoztathatjuk meg. Az aktulis knyvtr tartalmnak kilistzsra a dir parancs szolgl. FIGYELEM!!! A Matlab 4.2-es verzija nem kezeli a hossz fjlneveket. Ezek hasznlatt kerljk.

A Matlab programozsi nyelveMint fentebb emltettk az M llomnyokon bell lehet sg van hurkok, elgazsok, stb. szervezsre. Ezek kzl itt a legalapvet bbeket ismertetjk. A for utasts szolgl ciklus szervezsre. (lsd help for) Az if, else, elseif utastsok szolglnak elgazsok szervezsre. (lsd help if) Az .m llomnyokon bell a ';' szolgl az utastsok elvlasztsra. (Egy sorban tbb utasts is szerepelhet.) gyeljnk a ; kittelre akkor is, ha az adott sorban

MATLAB, SIMULINK, Toolboxok

51

csak egy utasts szerepel, mert ellenkez esetben a Matlab a parancs ablakban megjelenti az adott utasts eredmnyt. Programunk knnyebb tlthatsga rdekben ne fukarkodjunk megjegyzsekkel. Ha egy sorban brhol kitesszk a % jelet, akkor a sor %-t kvet rszt a Matlab megjegyzsnek tekinti s nem rtelmezi. Programunk m kdsnek nyomon kvetsre a db-vel kezd d utastsokat hasznlhatjuk (lsd mg help debug). Szksg lehet arra, hogy a program futst megszaktsuk s a felhasznltl valamilyen adatot krjnk, vagy egyszer en egy billenty letst bevrjuk. A felhasznltl adatot az input fggvny segtsgvel krhetnk. Pldul akor=input('Hany eves vagy?');

utasts htasra a felhasznl szembesl a Hany eves vagy? krdssel, majd vlasza a kor vltozba kerl. Ebben az esetben a felhasznl brmely rtelmes Matlab kifejezst megadhat. A kifejezst a Matlab kirtkeli s az eredmny kerl a kor vltozba. A pause utasts hatsra a program vgrehajtsa megll, gombnyomsra folytatdik.

Sajt fggvnyek ltrehozsa Matlab-balA fggvnyek specilis M llomnyok. Mindssze azrt specilisak, mert a function kulcsszval kezd dnek.function [eredmny1,eredmny2, ...] = fggvny_nv(bemeneti_valtozo1, bemeneti_valtozo2, ...)

Mint korbban lthattuk a Matlab "beptett" fggvnyeir l a help utasts segtsgvel kaphattunk informcit. Sajt magunk ltal ltrehozott fggvnyekr l is adhatunk help-et. Ehhez csak annyit kell tennnk, hogy a function kulcsszt kvet sorokba megjegyzsknt lerjuk azt, amit ltni szeretnnk ha kiadjuk a help fggvny_nv utastst. A fggvnyek mg abban klnbznek az M llomnyoktl, hogy minden felhasznlt vltoz loklis. Ha egyes vltozkat szeretnnk hozzfrhet v tenni ms fggvnyek, vagy a parancsablak szmara, akkor azt aglobal gloabalis_valtozo_1 globalis_valtozo_2 ...

utasts segtsgvel tehetjk meg.

52

Lantos: Szablyozstechnika gyakorlatok

Egybknt minden msban az M llomnyoknl ismertetett szablyok maradnak rvnyben. Itt is gyeljnk arra, hogy fggvnynket megfelel alknyvtrba helyezzk. Lssunk egy pldt. Szmtsuk ki rekurzv mdon n!-t.function [eredmeny]=fakt(n) %FAKT(n) - n! szamitasa rekurziv modszerrel. Ha n %nem egesz szam, akkor felfele kerekitjuk. n=ceil(n); %kerekites if n==0, eredmeny=1; else eredmeny=n*fakt(n-1); end;

Prbljuk ki fggvnynk m kdst.>>help fakt FAKT(n) - n! szmtsa rekurzv mdszerrel. Ha n nem egesz szam, akkor felfele kerekitjuk. >>fakt(6) ans = 720

Megjegyezzk, hogy a Matlab fggvnyek egy rsze is M llomnyokknt van implementlva. Egy "toolbox" pedig nem ms, mint adott tmakr kr csoportostott hasznosabbnl hasznosabb fggvnyek gy jtemnye, melyek szintn M llomnyokknt vannak implementlva (s/vagy sok esetben .mex fljokknt is). Ezrt javasoljuk, hogy miel tt brki nekiesne sajt fggvnyek rsnak, vizsglja meg el bb, hogy nem tartalmaz-e valamelyik toolbox cljainak megfelel (s minden bizonnyal numerikus szempontbl stabilabb s gyorsabb) fggvnyt. Ugyanakkor megfelel ismeretek birtokban brki ltrehozhatja sajt kln alkalmazsi ill. kutatsi terletnek megfelel toolboxot-at.

MATLAB, SIMULINK, Toolboxok

53

A Control System ToolboxA Control system toolbox (CST) a szablyozstechnika ltalunk vizsglt terletn hasznos Matlab fggvnyek gy jtemnye. A tovbbi gyakorlatok sorn a feladatok megoldshoz mindig szksgnk lesz erre a toolboxra. A gyakorlatok folyamn vges dimenzij, lineris s id invarins (angolul Finite Dimensional Linear Time Invariant - FDLTI) rendszerekkel foglalkozunk. A CST ilyen rendszerek analzishez nyjt segtsget. Tekintsk el szr a folytonos idej rendszereket. Adott szakasz modelljt tbbflekppen megadhatjuk llapottr (state space) reprezentci. A folyamatot folytonos idej els fok lineris differencilegyenletekkel (llapotegyenlettel) adjuk meg. Ennek a reprezentcinak a Matlab-ban az llapotegyenlet ngy mtrixa (A,B,C,D) felel meg.

x = Ax + Bu y = Cx + Du

tviteli fggvny racionlis trt alakban (transfer function). A Matlab-ban ennek a reprezentcinak kt sorvektort feleltetnk meg, melyek az tviteli fggvny szmlljnak s nevez jnek polinomjait hatrozzk meg. Az tviteli fggvny formja egybemenet -egykimenet szakasz esetn az albbi:

s + a1sn

n 1

+

tviteli fggvny gyktnyez s alakban (zero pole). Csak annyiban klnbzik az el z alaktl, hogy az tviteli fggvny szmlljt s nevez jt faktorizltuk. Ezt a fajta reprezentcit a Matlab-ban egy skalrral s kt vektorral adjuk meg. A skalr hatrozza meg a szakasz er stst, a kt vektor elemei pedig a szmll s a nevez gykeinek felelnek meg.

(s zi )k

m

(s p j )j =1

i =1 n

Konverzi a lersok kztt. Bizonyos felttelek teljeslse esetn a fenti hrom reprezentci megfeleltethet egymsnak. Ha egy szakasz az egyik reprezentci szerint adott, kiszmolhatjuk a szakaszhoz tartoz msik kt reprezentci paramtereit is. Erre szolglnak a Matlab CST ss2tf, ss2zp, tf2ss, tf2zp, zp2ss, zp2tf utastsai. Pldul szeretnnk kiszmolni a 2s2 + s +1

L L

b0 s m + b1s m 1 +

+ bm 1s + bm

+ a n 1s + a n

54

Lantos: Szablyozstechnika gyakorlatok

tviteli fggvnnyel adott szakasz llapotegyenlett. El szr rgztsk vltozkban az tviteli fggvny szmlljt s nevez jt. >>num=2; >>den=[1 1 1]; Az llapotegyenlet mtrixai ezek utn: >> [A,B,C,D]=tf2ss(num,den) A = -1 1 B = 1 0 C = 0 2 -1 0

D = 0 A folytonos idej rendszerekhez teljesen hasonl a diszkrt idej rendszerek reprezentcija. Diszkrt idej rendszer llapottr (state space) reprezentcija. A folyamatot lineris differencia-egyenlettel adjuk meg.

x[k +1] = Ad x[k ] + Bd u[k ]

y[k ] = C d x[k ] + Dd u[k ]

Diszkrt idej tviteli fggvny racionlis trt alakban (transfer function). Ennek formja egybemenet -egykimenet (SISO) szakasz esetn az albbi: Diszkrt idej tviteli fggvny gyktnyez s alakban (zero pole). Csak annyiban klnbzik az el z alaktl, hogy a diszkrt idej tviteli fggvny szmlljt s nevez jt faktorizltuk.

MATLAB, SIMULINK, Toolboxok

55

A diszkrt idej reprezentcik kztti ttrst a folytonos idej esethez hasonlan vgezhetjk. A CTS lehet v teszi folytonos s diszkrt idej reprezentcik kztti ttrst is. Erre a d2cm, c2dm utastsok szolglnak. rtelemszer en meg kell adnunk a mintavteli peridusid t s a mintavtelezskor hasznlt tart tpust is. ('zoh' felel meg a nullarend tartnak). Pldaknt lltsuk el a fentiekben adott rendszer diszkrt idej alakjt, melyet T=1/10 mintavteli peridusid vel s zrusrend tartval nyernk. >>T=1/10 T = 0.1000 >> [Ad,Bd,Cd,Dd]=c2dm(A,B,C,D,T,'zoh') Ad = 0.9002 0.0950 Bd = 0.0950 0.0048 Cd = 0 Dd = 0 A Control System Toolbox segtsgvel adott szakasz vagy szablyozsi kr id s frekvenciatartomnybeli tulajdonsgait is vizsglhatjuk. Szakasz tulajdonsgainak vizsglata id tartomnyban Id tartomnyban adott szakasz lnyeges tulajdonsgairl gy nyerhetnk kpet, hogy specilis vizsgljelekkel gerjesztjk. A CST egyes fggvnyei a szakasz vlaszt szmtjk ki ilyen vizsgljelek esetn. 2 -0.0950 0.9952

56

Lantos: Szablyozstechnika gyakorlatok

A step utastssal szmthatjuk ki az egysgugrsra adott vlaszt (dstep-et hasznlunk, ha diszkrt idej szakaszrl van sz). Az impulse utasts a szakasz vlaszt szmtja Dirac-delta bemenet esetn (diszkrt idej megfelel je a dimpulse). Pldaknt szmtsuk ki az A,B,C,D mtrixokkal adott folytonos idej s az Ad, Bd, Cd, Dd mtrixokkal adott diszkrt idej szakaszok egysgugrsra adott vlaszt. >>subplot(211); step(A,B,C,D); grid; >>subplot(212); dstep(Ad,Bd,Cd,Dd); grid; Az eredmny az albbi bra (step vlasza folytonos, dstep vlasza lpcs s):Step ResponseFrom: U(1) 3

Amplitude

To: Y(1)

2 1 0 0 2 4 6 8 10 12

Step ResponseFrom: U(1) 3

Time (sec.)

Amplitude

To: Y(1)

2 1 0 0 20 40 60 80 100 120

Time (sec.)

Szakasz tulajdonsgainak vizsglata frekvenciatartomnyban Laplace vagy frekvenciatartomnyban els sorban a Nyquist- illetve Bodediagramokra vagyunk kvncsiak. rdekelhet bennnket ezen kvl a plusok s zrusok elhelyezkedse, illetve a gykhelygrbe. A Nyquist diagramot a nyquist utastssal llthatjuk el . A bode, pzmap, rlocus utastsok szolglnak a Bode-diagram, a plus-zrus elhelyezkeds s a gykhelygrbe megjelentsre. (A nyquist s a bode utastsok diszkrt idej prjai: dnyquist, dbode).

MATLAB, SIMULINK, Toolboxok

57

Pldaknt nzzk meg hogyan alakul az A,B,C,D mtrixokkal adott folytonos idej szakasz Nyquist- s Bode-diagramja, illetve a plusok s zrusok elhelyezkedse a komplex szmskon.

58 nyquist(A,B,C,D);

Lantos: Szablyozstechnika gyakorlatok

Nyquist DiagramsFrom: U(1) 2.5 2 1.5 1

Imaginary Axis

0.5 To: Y(1) 0 -0.5 -1 -1.5 -2 -2.5 -1

-0.5

0

0.5

1

1.5

2

Real Axis

bode(A,B,C,D);Bode DiagramsFrom: U(1) 20

Phase (deg); Magnitude (dB)

0

-20

-40 0 -50 To: Y(1) -100 -150 -200 10-1

100

101

Frequency (rad/sec)

MATLAB, SIMULINK, Toolboxok pzmap(A,B,C,D); grid;Pole zero map 1

59

0.5 Imag Axis

0

-0.5

-1 -0.5

-0.4

-0.3 -0.2 Real Axis

-0.1

0

Megjegyzs: A felhasznlt fggvnyeket az itt ismertetett l eltr en is hasznlhatjuk. Ennek mdja az adott utasts help-jben tallhat meg. A utastsok teljes krnek s sszes lehetsges felhasznlsuk ismertetse meghaladja jelen lers kereteit. Tancsoljuk a gyakorlaton rsztvev knek, hogy a gyakorlat sorn felhasznlt vagy kiosztsra kerl llomnyokat tanulmnyozzk t, mert azok nem kevs tanulsggal szolglnak a Matlab utastsainak felhasznlst illet en.

SimulinkA gyakorlatok sorn a Simulink blokk-orientlt nyelv nem kerl intenzven felhasznlsra, ezrt csak nhny mondat erejig trnk ki r. A Simulink grafikus felletnek inditsa a Matlab command windowban kiadott simulink paranccsal lehetsges. A Simulink a blokkokbl felptett dinamikus (differencil- s/vagy differencia- s/vagy algebrai egyenletekkel lerhat) rendszerek szimulcijra alkalmas program. A Simulink-et kt lpesben hasznljuk fel, a modell-alkotsban s a modell-analzisben. A modellt blokkokbl ptjk fel, amelyek klnbz tpusosztlyokba vannak szervezve (pl forrsok, lineris rendszerekhez tartoz blokkok, kijelz k, stb.). A blokkdiagram bevitele rtelemszer , a standard grafikus programokhoz hasonl. A modell szimullsakor tbb paramter belltsa szksges, melyek kzl legfontosabb a szimulci id tartomnya, az alkalmazott numerikus integrlsi mdszer, a lpskz nagysga s az elvrt pontossg).

60

Lantos: Szablyozstechnika gyakorlatok

Hasznos link: http://www.mathworks.com A tovbbiakban kt pldt mutatunk be a Simulink hasznlatra. Az els plda egy egytrols-integrl felnyitott krt K = 1 krer stsnl visszacsatolva vizsgl (az alapjelugrs 1 sec-nl trtnik, amely a Step input paramtere). A blokkvzlat s a szablyozott jellemz a Graph-on a kvetkez :

S te p In p u t

+ Sum

K M a trix G a in

1 s (s + 1 ) Z e ro -P o le G ra p h

1 .5

1

0 .5

0

0

5 10 T im e (s e c o n d )

15

MATLAB, SIMULINK, Toolboxok A msodik plda egy hrom trols tag PID szablyozsnak Simulink modellje:

61

A PID szablyoz (group) rszletes megfelel je (ungroup), K=1.7666:

A zrt szablyozsi kr tmeneti fggvnye a Graph-on:1 .5

1

0 .5

0

0

5

10 T im e (se co n d )

15

20