Bevezetés a MATLAB használatába



Hasonló dokumentumok
Algoritmusok Tervezése. 1. Előadás MATLAB 1. Dr. Bécsi Tamás

MATLAB OKTATÁS 1. ELŐADÁS ALAPOK. Dr. Bécsi Tamás Hegedüs Ferenc

Matematikai programozás gyakorlatok

6. előadás. Matlab 1. (Ismerkedés, környezet, adattípusok) Dr. Szörényi Miklós, Dr. Kallós Gábor. Széchenyi István Egyetem

Tartalomjegyzék. Typotex Kiadó III. Tartalomjegyzék

Lineáris Algebra GEMAN 203-B. A három dimenziós tér vektorai, egyenesei, síkjai

program használata a középiskolai matematika oktatásban

NUMERIKUS MÓDSZEREK FARAGÓ ISTVÁN HORVÁTH RÓBERT. Ismertető Tartalomjegyzék Pályázati támogatás Gondozó

KOVÁCS BÉLA, MATEMATIKA I.

Az osztályozó, javító és különbözeti vizsgák (tanulmányok alatti vizsgák) témakörei matematika tantárgyból

Grafika. Egyváltozós függvény grafikonja

5.10. Exponenciális egyenletek A logaritmus függvény Logaritmusos egyenletek A szinusz függvény

Analízis. Ha f(x) monoton nő [a;b]-n, és difható egy (a;b)-beli c helyen, akkor f'(c) 0

Közúti forgalommodellezési gyakorlatok

Baran Ágnes. Gyakorlat Függvények, Matlab alapok

MATEMATIKA FELADATGYŰJTEMÉNY

>> x1 = linspace( ); plot(x1,sin(x1),'linewidth',1,'color',[1 0 0]);

Komputer statisztika gyakorlatok

1. Feladatlap. Függvények. Mőveletek Matlab nyelvben. Példa inverz osztásra >>d=2\1 d= Információkérési lehetıségek help utasítás

Dr. Kuczmann Miklós JELEK ÉS RENDSZEREK

2. Digitális hálózatok...60

MATEMATIKA I. RÉSZLETES ÉRETTSÉGI VIZSGAKÖVETELMÉNY A) KOMPETENCIÁK

Mátrixaritmetika. Tartalom:

Sztojka Miroszláv LINEÁRIS ALGEBRA Egyetemi jegyzet Ungvár 2013

Ady Endre Líceum Nagyvárad XII.C. Matematika Informatika szak ÉRINTVE A GÖRBÉT. Készítette: Szigeti Zsolt. Felkészítő tanár: Báthori Éva.

1. előadás. Függvények ábrázolása. Dr. Szörényi Miklós, Dr. Kallós Gábor

Vektorszámítás Fizika tanárszak I. évfolyam

KOVÁCS BÉLA, MATEMATIKA I.

Aronic Főkönyv kettős könyvviteli programrendszer

KETTŐS KÖNYVELÉS PROGRAM CIVIL SZERVEZETEK RÉSZÉRE

Mérnöki programozás 8. Szerkesztette: dr. Vass Péter Tamás

Széchenyi István Egyetem, 2005

Fejezetek a lineáris algebrából PTE-PMMK, Műszaki Informatika Bsc. Dr. Kersner Róbert

JANUS PANNONIUS TUDOMÁNYEGYETEM. Schipp Ferenc ANALÍZIS II. ***************

1.1. Gyökök és hatványozás Hatványozás Gyökök Azonosságok Egyenlőtlenségek... 3

KOVÁCS BÉLA, MATEMATIKA I.

5. Trigonometria. 2 cos 40 cos 20 sin 20. BC kifejezés pontos értéke?

Ismétlődő műveletek elvégzésének automatizálása

Baran Ágnes. Gyakorlat Halmazok, függvények, Matlab alapok. Baran Ágnes Matematika Mérnököknek Gyakorlat 1 / 34

Egy emelt szintű érettségi feladat kapcsán Ábrahám Gábor, Szeged

Tanulmányozza az 5. pontnál ismertetett MATLAB-modell felépítést és működését a leírás alapján.

Lineáris algebra - jegyzet. Kupán Pál

KOVÁCS BÉLA, MATEMATIKA I.

% % MATLAB alapozó % % , Földváry Lóránt % Laky Piroska (kiegészítés)

NYUGAT-MAGYARORSZÁGI EGYETEM Faipari Mérnöki Kar. Mőszaki Mechanika és Tartószerkezetek Intézet. Dr. Hajdu Endre egyetemi docens MECHANIKA I.

Analízisfeladat-gyűjtemény IV.

Matematika POKLICNA MATURA

MATEMATIKA JAVÍTÁSI-ÉRTÉKELÉSI ÚTMUTATÓ

MATLAB. 5. gyakorlat. Polinomok, deriválás, integrálás

Fókuszált fénynyalábok keresztpolarizációs jelenségei

Minta 1. MATEMATIKA KÖZÉPSZINTŰ ÍRÁSBELI FELADATSOR. I. rész

C# gyorstalpaló. Készítette: Major Péter

Bevezetés a MATLAB programba

Dr. Pétery Kristóf: CorelDRAW 9 testre szabás

Matematika. Specializáció évfolyam

MATLAB alapismeretek I.

2. Interpolációs görbetervezés

Miskolci Egyetem. Diszkrét matek I. Vizsga-jegyzet. Hegedűs Ádám Imre

Az aperturaantennák és méréstechnikájuk

A DERIVE kezelése. 1. A DERIVE ablaka. Amikor elindítod a DERIVE-ot ez az ablak jelenik meg:

MATEMATIKA TANTERV Bevezetés Összesen: 432 óra Célok és feladatok

Széchenyi István Egyetem. Műszaki számítások. Matlab 4. előadás. Elemi függvények és saját függvények. Dr. Szörényi Miklós, Dr.

A MATLAB programozása. Féléves házifeladat. RGBdialog

Vényírás. 1. ábra. 1. oldal

KELE3. Felhasználói kézikönyv

MATEMATIKA TANMENET SZAKKÖZÉPISKOLA 11.E OSZTÁLY HETI 4 ÓRA 37 HÉT/ ÖSSZ 148 ÓRA

Kosztolányi József Kovács István Pintér Klára Urbán János Vincze István. tankönyv. Mozaik Kiadó Szeged, 2013

Kódolás, hibajavítás. Tervezte és készítette Géczy LászlL. szló 2002

Kijelző...P.27 Kezdeti Lépések Statisztikai Számítások Kifejezések és Értéket Bevitele Haladó Tidp,ányos Számítások Beviteli Tartományok...P.

FIR és IIR szűrők tervezése digitális jelfeldolgozás területén

1.1 Szakdolgozat témája A Program célja A használt technológiák ismertetése A program megtervezése...

A számok kiíratásának formátuma

Lineáris programozás. Modellalkotás Grafikus megoldás Feladattípusok Szimplex módszer

Természetes számok: a legegyszerűbb halmazok elemeinek. halmazokat alkothatunk, ezek elemszámai természetes 3+2=5

Valószín ségelmélet házi feladatok

BUDAPESTI KÖZGAZDASÁGTUDOMÁNYI EGYETEM. Puskás Csaba, Szabó Imre, Tallos Péter LINEÁRIS ALGEBRA JEGYZET

MUNKAANYAG. Szabó László. Szilárdságtan. A követelménymodul megnevezése:

1. Közös ismeretek Mérési adatok kiértékelése A MATLAB használata

TARTALOM. Ismétlő tesztek ÚTMUTATÁSOK ÉS EREDMÉNYEK...255

A MATLAB alapjai. Kezdő lépések. Változók. Aktuális mappa Parancs ablak. Előzmények. Részei. Atomerőművek üzemtana

Tervezett erdőgazdálkodási tevékenységek bejelentése

Ismerkedés a Matlabbal

Bevezetés a számításelméletbe I. feladatgyűjtemény. Szeszlér Dávid, Wiener Gábor

Poszeidon (EKEIDR) Irat és Dokumentumkezelő rendszer webes felület

Vetülettani és térképészeti alapismeretek

Számítógéppel támogatott geometriai kutatás és oktatás Debrecen 2009.

Memento kurzus: Matlab bevezető

A gyakorlatok HF-inak megoldása Az 1. gyakorlat HF-inak megoldása. 1. Tagadások:

MATLAB alapismeretek II.

Általános statisztika II. Kriszt, Éva Varga, Edit Kenyeres, Erika Korpás, Attiláné Csernyák, László

PRÓBAÉRETTSÉGI MATEMATIKA május-június SZÓBELI EMELT SZINT. Tanulói példány. Vizsgafejlesztő Központ

Bevezetés 3. Vizsga tételsor 5. 1 Komplex számok 6. 2 Lineáris algebra Vektorterek 11

Tartalom. Descartes-koordináták. Geometriai értelmezés. Pont. Egyenes. Klár Gergely 2010/2011. tavaszi félév

Komplex számok szeptember Feladat: Legyen z 1 = 2 3i és z 2 = 4i 1. Határozza meg az alábbi kifejezés értékét!

Baran Ágnes. Gyakorlat Komplex számok. Baran Ágnes Matematika Mérnököknek Gyakorlat 1 / 33

9. Áramlástechnikai gépek üzemtana

Topográfia 7. Topográfiai felmérési technológiák I. Mélykúti, Gábor

NeoSzámla Használati Útmutató. Verziószám: 2014/Q2 Kelt: neoszamla.hu

Kisvállalkozások könyvelése. Infotéka Kft. programjaival

Access 2010 Űrlapok és adatelérés

Átírás:

Bevezetés a MATLAB használatába Kiegészítő jegyzet Dinamikus rendszerek paramétereinek becslése c. tárgyhoz Magyar Attila Pannon Egyetem Automatizálás Tanszék

Tartalomjegyzék 1. MATLAB............................. 3 2. Alapok............................... 3 2.1. Súgó................................ 3 2.2. Naplózás.............................. 3 3. Változók, értékadás........................ 4 3.1. Skalár változók.......................... 4 3.2. Vektor változók.......................... 5 3.2.1. Indexelés.......................... 6 3.3. Mátrix változók.......................... 6 3.3.1. Speciális mátrixok.................... 7 3.3.2. Indexelés.......................... 8 3.4. Munkatérbeli változók...................... 9 4. Műveletek............................. 10 4.1. Alapvető műveletek........................ 10 4.1.1. Összeadás, kivonás, szummázás............. 10 4.1.2. Szorzás, osztás, inverz.................. 11 4.1.3. Hatványozás........................ 13 4.1.4. Komplex számok..................... 14 4.2. További műveletek........................ 15 4.2.1. Alapvető függvények................... 15 4.2.2. Mátrixfüggvények..................... 17 4.2.3. Polinomok......................... 19 5. Grafikus ábrázolás........................ 22 5.1. Kétdimenziós ábrák........................ 22 5.2. Háromdimenziós ábrák...................... 27 5.3. Nyomtatás fájlba......................... 27 6. Programozás............................ 27 6.1. Szkriptek............................. 28 6.1.1. Egy példa szkript..................... 29 6.2. Függvények............................ 31 6.2.1. Változótípusok...................... 31 6.2.2. Súgó írása......................... 31 6.2.3. Hibakezelés........................ 31 6.2.4. Egy példa függvény.................... 31 6.3. Ciklusok.............................. 31 6.4. Elágazások............................. 31 7. Simulink.............................. 31

1 MATLAB 3 1. MATLAB A Matlab egy sokoldalú matematikai programcsomag, amely a mérnöki számításokat egyszerűsíti le. (A Matlab neve a MATrix és a LABoratory szavakból ered.) A Matlab nyelve egy magas szintű, BASIC-szerű programozási nyelv, éppen ezért könnyű vele dolgozni. Elsősorban numerikus és mátrixalgebrai feladatokra dolgozták ki, kiegészítő csomagokkal (Toolbox-ok: egy bizonyos feladatosztályhoz tartozó parancsok gyűjteménye) azonban rengeteg területen alkalmazható az irányítástechnikától a bioinformatikán át a jelfeldolgozásig. 2. Alapok 2.1. Súgó A help utasítás segítségével az egyes Matlab utasítások leírását és szintaxisát ismerhetjük meg. Használata: >> help utasitas_nev Például a koszinusz függvény esetén: >> help cos [Enter] COS cosine COS(X) is the cosine of the elements of X. A kiválóan használható online súgó a főablakból érhető el egy ikonra kattintva (1. ábra), illetve parancssorból az alábbi utasítással: >> helpdesk 2.2. Naplózás A gyakorlaton való munkát könnyíti meg a Matlab naplózási funkciója: >> diary on >>... >> diary off mely az aktuális könyvtárban egy diary.txt fájlba menti az on és az off között kiadott parancsokat és a kapott eredményeket.

3 Változók, értékadás 4 3. Változók, értékadás 1. ábra. Matlab főablak A változónevek számok és betűk kombinációi, a megkötés csupán annyi, hogy az első karakter nem lehet szám, valamint a változónév maximális hossza 31 karakter lehet. Szerepelhet benne a _ (alulvonás) karakter. 3.1. Skalár változók Az értékadás minden esetben a = használatával történik: >> a=3.45 az a változó értéke legyen 3.45 a= 3.4500 A változó típusának megválasztása automatikus, nem kell foglalkoznunk a megadásával. A fenti esetben valós lesz az a változó. Amennyiben nem akarjuk, hogy az eredmény megjelenjen a parancsablakban, egy pontosvesszővel zárjuk le az utasítást: >> a=3.45; >>

3 Változók, értékadás 5 Komplex számok megadása az alábbi módokon történhet: >> c=1+2*i c= 1.0000 + 2.0000i >> d=2+3*j d= 2.0000 + 3.0000i Komplex számok esetében fontos művelet a konjugálás (a képzetes rész előjele megfordul), erre a operátor használatos: >> c 1.0000-2.0000i 3.2. Vektor változók Veltorok megadása szögletes zárójelek között történik: >> v=[1 2 3] sorvektor v = 1 2 3 illetve: >> w=[1;2;3] oszlopvektor w = 1 2 3 Tehát sorvektorok esetén az egyes elemek közé szóköz (vagy vessző) kerül, oszlopvektor esetén pedig pontosvessző.

3 Változók, értékadás 6 Transzponálás segítségével kaphatunk oszlopvektorból sorvektort (és fordítva), ezt a Matlabban a jelöli: >> w 1 2 3 Amennyiben komplex elemű vektoraink vannak, a operátor értelemszerűen a konjugált transzponáltat jelöli. 3.2.1. Indexelés Vektorok elemeire az alábbi módon hivatkozhatunk: >> w(2) a w vektor 2. eleme 2 Vektor értékadása történhet elemenként is: >> w(3)=2.3+4*i w = 1.0000 2.0000 2.3000 + 4.0000i 3.3. Mátrix változók Mátrixok megadása nagyon hasonló a vektorokéhoz, például a [ 4 5 ] 6 2 5 4 mátrix esetében: >> A=[4 5 6;2 5 4] A=

3 Változók, értékadás 7 4 5 6 2 5 4 A transzponálás hasonlóan működik, mint a vektoros esetben. 3.3.1. Speciális mátrixok Vannak speciális mátrixok, amelyeket az egyszerűség kedvéért külön utasítással lehet létrehozni: >> eye(4) 4 4-es egységmátrix 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 >> zeros(3,2) 3 2-es nullmátrix 0 0 0 0 0 0 >> ones(3,2) 3 2-es mátrix csupa egyesekkel 1 1 1 1 1 1 >> rand(2,3) 2 3-as véletlen mátrix, aminek az elemei a [0, 1] intervallumon egyenletes eloszlásúak 0.9501 0.6068 0.8913 0.2311 0.4860 0.7621

3 Változók, értékadás 8 >> randn(2,3) 2 3-as véletlen mátrix, aminek az elemei 0 várhatóértékű és 1 szórású normális eloszlásúak 1.0668-0.0956 0.2944 0.0593-0.8323-1.3362 A véletlenszám generálás természetesen skalárokra is működik: s=randn s = 0.7143 3.3.2. Indexelés A mátrixok elemeire, soraira, oszlopaira, illetve részmátrixaira a vektoroknál leírt módszer általánosításával hivatkozhatunk: >> A(1,2) az A mátrix 1, 2 indexű eleme 5 Egész sorra való hivatkozás: >> A(2,:) az A mátrix második sora 2 5 4 Oszlopra való hivatkozás: >> A(:,1) az A mátrix első oszlopa 4 2 Részmátrixra való hivatkozás:

3 Változók, értékadás 9 >> D=rand(5,5) legyen D egy 5 5-ös véletlen mátrix >> D = 0.4565 0.7919 0.9355 0.3529 0.1987 0.0185 0.9218 0.9169 0.8132 0.6038 0.8214 0.7382 0.4103 0.0099 0.2722 0.4447 0.1763 0.8936 0.1389 0.1988 0.6154 0.4057 0.0579 0.2028 0.0153 >> D(2:4,1:2) a 2 4 sor és az első kettő oszlop elemei 0.0185 0.9218 0.8214 0.7382 0.4447 0.1763 Egy mátrix (vagy vektor, vagy skalár) méretének lekérdezése a size utasítás segítségével történik: >> size(a) 2 3 Amennyiben az A mátrix esetében csak a sorok, vagy csak az oszlopok számára vagyunk kíváncsiak, a size(a,1) vagy a size(a,2) utasítás használható. 3.4. Munkatérbeli változók Ha kíváncsiak vagyunk az aktuálisan használt változónevekre, illetve a változók méretére és típusára, akkor a legegyszerűbb a Parancsablak (Command window) bal oldalán az Aktuális könyvtár (Current directory) helyett a Munkatér (Workspace) tabot kiválasztani (2. ábra). A Parancsablakban a whos utasítással ugyanez az információ válik elérhetővé.

4 Műveletek 10 2. ábra. Munkatérbeli változók megjelenítése 4. Műveletek 4.1. Alapvető műveletek 4.1.1. Összeadás, kivonás, szummázás Skalárokon triviális, mátrixok és vektorok esetén vigyázni kell, hogy az operandusok méretei megegyezzenek. Vektorokon (v sorvektor, w pedig oszlopvektor): >> v-w??? Error using ==> - Matrix dimensions must agree. >> v-w 0 0 0.7000 + 4.0000i

4 Műveletek 11 Mátrixokon: >> A=[2 2;3 3]; >> B=[1 2 4;3 4 5]; >> A+B??? Error using ==> + Matrix dimensions must agree. >> B=[1 2;3 4]; >> A+B 3 4 6 7 Szummázás: egy vektor elemeit adja össze, illetve mátrixok esetén az oszlopok elemeinek összegeit tartalmazó sorvektor az eredmény. >> sum(b) 4 6 >> sum(sum(b)) 10 4.1.2. Szorzás, osztás, inverz A szorzás és az osztás skalárokra triviális, mátrixok esetén a méreteknek stimmelniük kell. Skalárokra az inverz a reciprokkal egyezik meg, mátrixoknál van jelentősége. Vektorok szorzása (v = [1, 2, 3], w = [1, 2, 2.3 + 4i] T, a = 3.45): >> w*v 1.0000 2.0000 3.0000 2.0000 4.0000 6.0000

4 Műveletek 12 >> v*w 2.3000 + 4.0000i 4.6000 + 8.0000i 6.9000 +12.0000i 11.9000 +12.0000i >> a*v 3.4500 6.9000 10.3500 Mátrixok szorzása (v = [1, 2, 3], a = 3.45): >> A=rand(3,4); >> B=randn(4,2); >> A*B 2.3917-1.8969 0.6315-1.2047 2.3585-2.5930 >> B*A??? Error using ==> * Inner matrix dimensions must agree. >> v*a >> a*a 4.4324 3.8420 2.9469 2.9212 2.5764 1.6077 1.8118 2.8915 1.5356 1.4443 0.6991 0.0678 3.2148 2.9195 2.3189 2.3504

4 Műveletek 13 A mátrixok invertálását elvégző utasítás az inv(): >> D=rand(3,3) D = 0.3795 0.7095 0.1897 0.8318 0.4289 0.1934 0.5028 0.3046 0.6822 >> inv(d) -0.9828 1.7927-0.2351 1.9776-0.6878-0.3548-0.1587-1.0142 1.7974 >> D*inv(D) 1.0000 0.0000 0 0.0000 1.0000 0-0.0000 0 1.0000 4.1.3. Hatványozás A hatványozást megvalósító Matlab operátor a ^, mind skalárokra, mind pedig mátrixokra értelmezve van. Pl.: >> A=2*ones(3) A = 2 2 2 2 2 2 2 2 2 >> A^2 (A 2 = A A, a mátrix szorzás szabályai szerint)

4 Műveletek 14 12 12 12 12 12 12 12 12 12 4.1.4. Komplex számok Komplex számoknak a kanonikus (z = a + bi), illetve exponenciális alakját (z = re iϕ ) használhatjuk. Megjegyzés: Az exponenciális alak trigonometrikus ekvivalense z = r(cos(ϕ)+ i sin(ϕ)). Komplex számok képzetes részének megadása az i és a j betű segítségével történik, éppen ezért ezeket csak olyan esetekben használjuk változóként, amikor nem komplex számokkal dolgozunk! >> z=3+4*j komplex szám megadása z = 3.0000 + 4.0000i A valósrészt visszaadó utasítás: >> real(z) 3 A képzetes részt visszaadó utasítás: >> imag(z) 4 Átalakítás exponenciális alakra: >> angle(z) z fázisszögének meghatározása

4 Műveletek 15 0.9273 az eredmény radiánban ( π és π közötti érték) >> abs(z) z abszolútértékének (hosszának) meghatározása 5 Komplex szám megadható közvetlenül exponenciális alakban is: >> 3*exp(i*pi) -3.0000 + 0.0000i A komplex konjugált meghatározására a korábban megismert operátor mellett a conj() utasítás is használható: >> conj(z) 3.0000-4.0000i Az olyan műveleteknél, melyek komplex számok esetében több eredményt is adhatnak, (eml: egy komplex számnak n db n-edik gyöke van, vagy komplex logaritmus) Matlabban mindig csak egy eredményt kapunk. 4.2. További műveletek 4.2.1. Alapvető függvények Az alábbiakban csak felsorolásszerűen, példa nélkül adjuk meg a Matlabban elérhető alapvető matematikai függvényeket. A help(utasitasnev) utasítással egy rövid súgót kapunk a parancsablakba, amely részletezi a kérdéses utasítás működését (milyen összefüggést valósít meg), illetve szintaxisát. Trigonometrikus függvények.

4 Műveletek 16 acos acosh acot acoth asin asinh atan atanh cos cosh cot coth sin sinh tan tanh arkusz koszinusz arkusz koszinusz hiperbolikusz Arkusz kotangens Arkusz kotangens hiperbolikusz Arkusz szinusz Arkusz szinusz hiperbolikusz Arkusz tangens Arkusz tangens hiperbolikusz Koszinusz Koszinusz hiperbolikusz Kotangens Kotengens hiperbolikusz Szinusz Szinusz hiperbolikusz Tangens Tangens hiperbolikusz Exponenciális és logaritmus függvények. exp Exponenciális log Természetes alapú logaritmus (ln) log2 Kettesalapú logaritmus log10 Tizesalapú logaritmus sqrt Négyzetgyök Kerekítés és maradékos osztás. fix Kerekítés 0 felé floor Kerekítés felé ceil Kerekítés + felé round Kerekítés a legközelebbi egész felé mod Modulo osztás rem Osztás utáni maradék sign Előjelfüggvény Diszkrét matematika. factor factorial gcd lcm nchoosek perms Prímtényezős felbontás Faktoriális Legnagyobb közös osztó Legkisebb közös többszörös Összes lehetséges kombináció - ( ) n k Összes lehetséges permutáció

4 Műveletek 17 4.2.2. Mátrixfüggvények A Matlabban rengeteg lineáris algebrai és mátrixanalízisbeli függvény segíti a munkát, ezek közül csak a fontosabbakat soroljuk fel. Mátrix determinánsa: det >> det(a) Visszatérési értéke 0, ha a mátrix szinguláris, azaz nem invertálható. Mátrix rangja: rank >> rank(a) A mátrix lineárisan független sorainak, vagy oszlopainak számát adja meg. Mátrix (vagy vektor) norma: norm >> norm(a) Mátrix, vagy vektor l 2 normáját adja vissza. Mátrix esetén ez a legnagyobb szingulárisérték, vektor esetében pedig a vektor hossza. Mátrix nyoma: trace >> trace(a) A mátrix főátlójában álló elemek összege. Mátrixinverz: inv >> inv(a) Az A A 1 = I egyenletet kielégítő mátrixot adja vissza, ha létezik. Sajátérték, sajátvektor: eig Az Av = λv egyenletet kielégítő (λ, v) sajátvektor-sajátérték párok meghatározására. Pl: >> A=rand(3); >> [s_vektor,s_ertek]=eig(a) s_vektor = 0.5396 0.7050 0.7050 0.6639-0.0492 + 0.3569i -0.0492-0.3569i 0.5178-0.5466-0.2728i -0.5466 + 0.2728i s_ertek = 1.9681 0 0 0 0.0658 + 0.3097i 0 0 0 0.0658-0.3097i

4 Műveletek 18 A példában az s_ertek nevű diagonális mátrix tartalmazza főátlójában az A sajátértékeit, az egyes sajátértékekhez tartozó sajátvektorok pedig az s_vektor mátrix megfelelő oszlopai. Mátrix exponenciális: expm >> expm(a) Az exponenciális függvény végtelen sorba fejtve általánosítható mátrixokra is: exp(a) = Mátrix logaritmus: logm >> logm(a) A mátrix exponenciális függvény inverze. Mátrix négyzetgyök: sqrtm >> sqrtm(a) A az a mátrix, amely kielégíti az A A = A egyenletet. Elemenkénti műveletek: Mátrixokra és vektorokra egyaránt érvényes, hogy a művelet operátora elé kitett pont (.) az eredeti művelet elemenkénti változatát hajtja végre, pl: >> X=2*ones(3,3) X = >> X^2 >> X.^2 2 2 2 2 2 2 2 2 2 12 12 12 12 12 12 12 12 12 k=0 A k k!

4 Műveletek 19 4 4 4 4 4 4 4 4 4 Megjegyzés: Ha a Matlabban egy, a matematikából skalárváltozósnak megismert függvényt (pl. sin, exp, stb.) hívunk meg mátrix, vagy vektor argumentummal, akkor az egyes elemek függvényértékeit tartalmazó ugyanolyan méretű mátrixot, vagy vektort kapjuk vissza, pl: >> Y=ones(2,3); >> exp(y) 2.7183 2.7183 2.7183 2.7183 2.7183 2.7183 4.2.3. Polinomok A polinomokat az teszi nagyon vonzóvá, hogy bármely műveletet könnyedén el lehet rajtuk végezni - még a differenciálást, és az integrálást is. A Matlab a polinomokat vektorokként tárolja, a vektor elemei pedig a polinom együtthatói. Ezt a függvénycsaládot a Matlab analitikus úton tudja differenciálni és integrálni (A Symbolic Math Toolbox használatával többféle analitikus, illetve szimbolikus számolás is elvégezhető - nem csak polinomokra). A fontosabb utasításokat az alábbiakban részletezzük. Polinom definiálása: poly Annak a polinomnak az együtthatóit adja vissza sorvektorként, amelynek gyökei az argumentumként megadott vektor elemei. >> r=[1 2 3]; az r vektor tartalmazza a polinom gyökeit >> p=poly(r) a polinom megadása a gyökeivel történik, azaz p = p(x) = (x 1)(x 2)(x 3)

4 Műveletek 20 1-6 11-6 az első helyen a független változó legmagasabb kitevőjű hatványának együtthatója áll, azaz p(x) = x 3 6x 2 + 11x 6. Polinom kiértékelése: polyval >> x=4; >> polyval(p,x) a p polinomot szeretnénk kiértékelni x-ben. 6 p(4) = 6 a kiértékelés elvégezhető vektorosan is: >> t=rand(1,5); öt véletlenszerű pontban szeretnénk kiértékelni p-t. >> polyval(p,t) -1.8589-0.8588-2.3070-3.1777-4.1228 Polinomok szorzása: conv Az argumentumban megadott polinomok összeszorzásával kapott polinom együtthatóit tartalmazó sorvektorral tér vissza. Ez az utasítás gyakorlatilag két vektort konvolvál össze, innen a neve. Példa: szorozzuk össze a p(x) = (x 1)(x 2), és a q(x) = (x 2)(x 3) polinomokat: >> p=poly([1 2]); >> q=poly([2 3]); >> conv(p,q) 1-8 23-28 12 p(x)q(x) = x 4 8x 3 + 23x 2 28x + 12 Polinomosztás: deconv Az utasítás hívásánál figyelni kell arra, hogy ennél a műveletnél képződhet maradék is. Az eredménynek két változót kell biztosítani: [s,r]=deconv(q,p), azaz q(x)-et elosztva p(x)-szel a hányados s(x), a maradék pedig r(x),

4 Műveletek 21 és q(x) = s(x)p(x) + r(x). >> p=poly([1 2]); >> q=poly([1 2 3]); >> [s,r]=deconv(q,p) s = r = 1-3 0 0 0 0 maradék nélkül el tudtuk osztani >> w=poly([5 6 3]); >> [s,r]=deconv(q,p) s = r = 1-11 0 0 28-68 itt már van maradék is Polinom deriváltja: polyder Például w(x) = (x 5)(x 6)(x 3) = x 3 14x 2 + 63x 90 deriváltja >> polyder(w) 3-28 63 dw(x) dx = 3x 2 28x + 63 Polinom gyökei: roots Az argumentumként megadott polinom gyökeit adja vissza egy oszlopvektorban. >> roots(w)

5 Grafikus ábrázolás 22 6.0000 5.0000 3.0000 5. Grafikus ábrázolás Az adatok kirajzoltatására számos lehetőség van Matlabban, itt csak a legegyszerűbbeket mutatjuk be. 5.1. Kétdimenziós ábrák A legtöbbet használt parancs, amivel kétdimenziós ábrákat hozhatunk létre, a plot, de a kirajzolni kívánt adatok jellegétől függően más utasításokra is szükség lehet. A plot egy univerzális parancs, amellyel elsősorban folytonos adatsort tudunk ábrázolni, ha azonban diszkrét adatsorral van dolgunk, előnyösebb a stem utasítás, amellyel impulzussorozatként ábrázolhatjuk az adatainkat. Hasonló esetben használható a stairs, amely nulladrendű tartószervvel mintavételezett jelekként ábrázolja adatainkat. Kétváltozós függvényeket a contour utasítás segítségével szintvonalakkal ábrázolhatunk két dimenzióban. A Matlab a grafikai műveleteknél is mátrixokkal és vektorokkal dolgozik, ezért ha jó minőségű ábrákat szeretnénk készíteni, az ábrázolandó függvény értelmezési tartományának megfelelő finomságú felosztását kell elkészíteni. A feleslegesen finom felosztás kerülendő, mert idő és számításigényes. Felosztás adott lépésközzel Az indexelésnél már megismert : operátorral történik. >> s=3:7 az s vektor fogja tartalmazni a [3 7] intervallum 1 lépésközű felosztását s = 3 4 5 6 7 Ha finomabb felosztást szeretnénk előállítani, nem árt, ha változtatni tudjuk a lépésközt az alábbi módon: >> t=-pi:pi/2:pi a [ π π] intervallum felosztása π 2 lépésközzel. Szintaxis: also_hatar:lepeskoz:felso_hatar t = -3.1416-1.5708 0 1.5708 3.1416

5 Grafikus ábrázolás 23 Felosztás adott számú részintervallumra: Amíg az előbbiekben a felosztás lépésközét adhattuk meg, addig ebben az esetben az intervallum határai mellett azt a számot adjuk meg, ahány részre osztani szeretnénk az intervallumot: >> r=linspace(1,3,5) Szintaxis: linspace(also,felso,hanyfele) r = 1.0000 1.5000 2.0000 2.5000 3.0000 plot utasítás: Nagyon általános parancs, sokféle opcionális argumentummal hívható, itt csak a leggyakrabban használt kombinációkat mutatjuk be. >> t=-pi:pi/10:pi; Felosztás >> plot(t,sin(t)) kirajzoltatás: első argumentum a felosztást tartalmazó vektor, második a függvény értékeit tartalmazza a felosztási pontokban (itt a sin utasítás egy t-vel azonos méretű vektorral tér vissza, melynek elemei t komponenseinek szinuszai) Az utasítás eredményéül kapott ablak a 3. ábrán látható. 3. ábra. A plot utasítás eredménye Amennyiben bele szeretnénk szólni az ábra színébe, a vonalstílusba és a vektorpontokba rajzolt szimbólumokba, egy harmadik argumentumot

5 Grafikus ábrázolás 24 is meg kell adni a plot parancsnak, ami egy speciális sztring, aminek az első eleme a vonalstílust határozza meg: Vonaltípus Szimbólum - Folytonos vonal + Plusz jel -- Szaggatott vonal o Kör : Pontvonal * Csillag -. Szaggatott pontvonal. Pont Színek x Kereszt r Piros s Négyzet g Zöld d Rombusz b Kék ^ Háromszög c Cián v Háromszög m Magenta > Háromszög y Sárga < Háromszög k Fekete p Ötágú csillag w Fehér h Hatágú csillag Például egy véletlen számsorozat ábrázolása magenta színű pontvonallal, a pontokban hatágú csillagokkal (4. ábra): >> t=linspace(1,100,30); >> y=randn(size(t)); >> plot(t,y, :mh ) stem utasítás: Olyankor használjuk, ha az ábrán ki szeretnénk hangsúlyozni az adatsor diszkrét voltát (5. ábra). Szintaxisa hasonló a plot utasításéhoz. Például: >> t=-pi:pi/10:pi; >> stem(t,sin(t)) stairs utasítás: Nulladrendű tartószervvel mintavételezett rendszerek jeleinek ábrázolásához (6. ábra). Szintaxisa hasonló a plot utasításéhoz. >> t=-pi:pi/10:pi; >> stairs(t,sin(t), r-- ) Több ábra egymáson: hold Ha kettő, vagy több ábrát szeretnénk ugyanabban az ablakban ábrázolni, akkor a hold utasítást használjuk:

5 Grafikus ábrázolás 25 4. ábra. A plot utasítás eredménye a megadott vonaltípussal, színnel, és szimbólummal 5. ábra. A stem utasítás eredménye >> plot(...); Első plot utasítás >> hold on A hold funkció bekapcsolva >> plot(...) A további ábrák a korábbival egy ablakba kerülnek. A hold funkció kikapcsolható a hold off utasítással.

5 Grafikus ábrázolás 26 6. ábra. A stairs utasítás eredménye Rácsozat: grid Használata hasonló a hold-hoz, rácsozatot jelenít meg az aktuális ábrán. Képmagyarázat: legend Ha egy ablakban ábrázoltunk több adatot, ajánlatos kitenni egy jelmagyarázatot, amely megkönnyíti az olvasást (7. ábra). Az utasítás argumentumai a megyarázatban megjelenítendő sztringek, az ábrák sorrendjében, pl: t=pi/2:pi/10:4*pi; plot(t,exp(-0.5*t).*sin(t)) hold on grid on plot(t,exp(-0.5*t), :r ) legend( exp*sin, exp ) Egyéb ábrafeliratok: Az ábra címét a >> title( abra_cim ) utasítással adhatjuk meg, a tengelyek feliratait pedig az >> xlabel( x_tengely_felirat ) >> ylabel( y_tengely_felirat ) >> zlabel( z_tengely_felirat ) (3D esetben z-tengely is van) utasításokkal változtathatjuk meg.

6 Programozás 27 7. ábra. A legend, hold, és a grid utasítás haználata 5.2. Háromdimenziós ábrák 5.3. Nyomtatás fájlba Hasznos lehet még az ábrák fájlba való exportálása. Erre a nem túl elegáns [Alt]+[PrintScreen] kombináción kívül két lehetőség is van a Matlabban. Az egyik az ábrát tartalmazó Figure ablak File Export menüjén keresztül, a másik pedig a parancssoros megoldás: >> print -depsc fajlnev A fajlnev nevű színes eps fájlba menti az aktuális grafikus ablak ábráját. >> print -djpeg90 fajlnev A fajlnev nevű, 90%-os minőségű jpeg fájlba menti az aktuális grafikus ablak ábráját. >> print -dtiff fajlnev A fajlnev nevű színes tiff fájlba menti az aktuális grafikus ablak ábráját. >> print -dpng fajlnev A fajlnev nevű színes png fájlba menti az aktuális grafikus ablak ábráját. 6. Programozás Ha egy bonyolultabb feladattal szembesülünk, kényelmesebben megoldható egy szkript segítségével, ami nem más, mint kötegbe szedett Matlab utasítások összessége. Ha olyan a feladat, hogy többször kell elvégezni különböző adatokon, egy függvény írása ajánlatosabb, mivel ennek argumentu adható

6 Programozás 28 át híváskor. Szkriptekben és függvényekben is megkönnyíti a feladat algoritmizálását a ciklusok és feltételvizsgálatok használata. A Matlab programnyelve hasonló a Basic-hez, elsajátítása egyszerű. A megírt szkripteket és függvényeket egy.m kiterjesztésű ún. M-fájlba mentjük. Új M-fájlokat a Matlab főablak File New menüpontjában hozhatunk létre, létezőket pedig a File Open menüpontban nyithatunk meg. Az M-fájlok szerkesztése történhet tetszőleges szövegszerkesztővel, de a Matlab beépített Editor-ja kényelmesebbé teszi a munkát (8. ábra). 8. ábra. A Matlab Editor ablaka Szkriptekben és függvényekben egy adott sorban a % jelet követő szövegrész megjegyzésnek minősül, azt a Matlab nem értelmezi utasításként. Több sornyi kódrészletet a 9. ábrán látható módon lehet egyszerűen kommentezni. 6.1. Szkriptek A legegyszerűbb M-fájl fajta, sem bemeneti, sem kimeneti argumentumai nincsenek. A szkriptek látják a Munkatér összes változóját, és módosítani is tudják azokat, illetve új változókat hozhatnak létre a Munkatérben.

6 Programozás 29 9. ábra. Többsoros kódrészlet kommentezése Akkor hasznosak, ha rendszeresen több Matlab utasítást akarunk egymásután végrehajtani. A szkript végrehajtása a fájl nevének (kiterjesztés nélkül) begépelésével történik. 6.1.1. Egy példa szkript Az alábbi szkript egy 5 5-ös véletlen mátrx sajátértékeit rajzolja ki a komplex számsíkon (10. ábra), feliratozza az ábrát, végül pedig a sajat.eps nevű eps fájlba exportálja: % Egy véletlen matrix sajatertekeinek kirajzoltatasa A=randn(5,5); [u,v]=eig(a); valosresz=real(diag(v)); kepzetesresz=imag(diag(v)); plot(valosresz,kepzetesresz, ro ) xlabel( Re ) ylabel( Im ) grid on

6 Programozás 30 title( Sajátértékek ) print -depsc sajat A szkript hívása pedig a Parancsablakban az alábbi módon: >> sajat 10. ábra. A sajat.m szkript által kirajzolt ábra

7 Simulink 31 6.2. Függvények 6.2.1. Változótípusok 6.2.2. Súgó írása 6.2.3. Hibakezelés 6.2.4. Egy példa függvény 6.3. Ciklusok 6.4. Elágazások 7. Simulink