1. Előadás Matlab lényeges vonásai, adattípusok. Salamon Júlia Előadás I. éves mérnök hallgatók számára
A Matlabról A MATLAB (MATrix LABoratory = mátrix laboratórium) egy interaktív, tudományos és műszaki számítások elvégzésére kifejlesztett, mátrixalapú, magas színtű programozási nyelv. A gyártó cég a The Math Works Inc a programdokumentáció mindegyikén így definiálja a programot: A MATLAB néhány jellemzője: több mint 600 matematikai, tudományos és mérnöki függvényt tartalmaz, matematikai analízisre, numerikus módszerekre és algoritmusok fejlesztésére a MATLAB programozási nyelvén könnyű különböző elemzéseket, modellezéseket és szimulációkat iók létrehozni ésmegjeleníteni, de akár önálló alkalmazásokat l k is meg lehet benne megvalósítani beépített ábrázoló rutinjaival egyszerűvé teszi a 2D és 3D ábrák létrehozását és szerkesztését vektorok, mátrixok, többdimenziós tömbök, objektumok és felhasználó által létrehozható adatstruktúrák segítik az adatfeldolgozást be- és kimeneti fájlszűrői segítségével képes írni és olvasni az elterjedtebb fájlformátumokat, köztük az ASCII-t és az EXCEL-t is. más alkalmazásokkal C, C++, Fortran, Java, ActiveX, vagy DDE felületen keresztül képes kapcsolatot létrehozni programozói felülete hatékony szerkesztési és hibakeresési felületet nyújt 2010.09.21. I. előadás 2
2010.09.21. I. előadás 3
Előadások tematikája 1) Matlab lényeges vonásai, adattípusok; 2) Numerikus lineáris algebra; 3) Logikai operátorok és függvények, logikai kifejezések, feltétel vizsgálata, elágazások; 4) Ismétlő struktúrák a Matlabban (for, while utasítások); 5) Matlab függvények, adatfeldolgozás, állományok kezelése; 6) Matlab grafikus lehetőségei, 2D, 3D-s grafikák - plot utasítás; - különböző koordináta rendszerek használata. 7) Grafikus felhasználói felületek, eseményvezérelt programozás. 2010.09.21. I. előadás 4
Laborok tematikája 1) Beolvasás, kiíratás a képernyőre. Változók bevezetése, műveletek változókkal. 2) Karakterláncokkal kk lvaló műveletek; ű 3) Műveletek vektorokkal; 4) Műveletek mátrixokkal; 5) Feltételes utasítások, if, case struktúrák; 6) Ismétlő struktúrák, for utasítás, véletlen számok generálása; 7) Ismétlő struktúrák, while utasítás; 8) Első zárthelyi dolgozat; 9) Matlab függvények; 10) Adatfeldolgozás, állományok kezelése; 11) Matlab grafikus lehetőségei, 2D grafikák; 12) Matlab grafikus lehetőségei, ő 3D grafikák; 13) Grafikus felhasználói felületek, eseményvezérelt programozás. Guide program ismertetése; 14) Második zárthelyi dolgozat. 2010.09.21. I. előadás 5
Könyvészet www.emte.siculorum.ro/~salamonjulia M. Ghinea, V. Fireteanu, Matlab Calcul numeric. Grafica. Aplicatii, ii Teora Könyvkiadó, Bucuresti, 2003. Stoyan Gisbert, Matlab, Typotex Könyvkiadó, Budapest, 2005. Imre-Lucaci Árpád, Cormoş Ana-Maria Maria, Matlab exemple şi aplicaţii în ingineria chimică, Presa Univ. Clujeană, Cluj Napoca, 2008. Brian D. Hahn, Daniel T. Valentine, Essential Matlab for engineers and scientists, Elsevier Könyvkiadó, Oxford, 2007. Radu Tiberiu Trimbitas, Analiză numerică. O introducere bazată pe MATLAB, Presa Universitară i ă Clujeană, ă 2005 Benyo Z., Palácz B., Szilágyi L., Insight into computer science with Maple, Scientia Könyvkiadó, Kolzsvár, 2005. http://www.mathworks.com/support/books/ 2010.09.21. I. előadás 6
Információkérési lehetőségek A Matlabról szóló leírások témák szerinti csoportosításban, különböző alkönyvtárakban vannak tárolva text illetve hipertext (HTML fájl) formában. Segítségkérés három szintje Az egyszerű help és a lookfor utasítás help - leírásokat tartalmazó alkönyvtárak listáját írja ki help alkönyvtár a megadott alkönyvtárban található utasítások listáját írja ki help utasítás az utasítás konkrét jelentését adja meg lookfor kulcsszó az általunk megadott szövegrészletet keres a kulcsszavak leírásának első sorában. A helpwin parancs hatására külön ablakban megjelenik az alkönyvtárak k listája. Az egérrel kattintva közvetlenül l bonthatjuk ki az információkat, újabb ablakok nyílnak amelyekben előre hátra lapozhatunk. A helpdesk parancs egyenértékű ahelp /Full Family Help almenüpont kattintásával. 2010.09.21. I. előadás 7
Tájékoztató parancsok hostid Matlab-server azonosító számát adja meg ver - Matlab verzió számát tudjuk meg what - felsorolja az M-fájlokat az aktuális könyvtárban which valami - megadja, hogy a valami beépített függvény-e, változó-e, létezik-ee egyáltalán who - felsorolja a létező változókat who a* - felsorolja az a-val kezdődő változókat whos - a létező változókról kapunk részletes információkat cd könyvtárnév - a megadott könyvtárba lép pwd - az aktuális munkakönyvtár nevét adja meg dir, ls - aktuális könyvtár tartalmát listázza path - az aktuális útvonalakat írja ki type fájlnév - a megadott állomány tartalmát írja ki lasterr - az utolsó hibaüzenetet adja meg! utasítás - az operációs rendszer megadott utasítását hajtja végre 2010.09.21. I. előadás 8
Parancs ablak utasításai clc - törli a parancs ablakot home - a kurzort az első sor első karakterére állítja format opoció - az adatok kiírásának formátumát adja meg A Matlab 4 tizedes pontossággal írja ki az értékeket (alapbeállítás), ezt a format short -nak felel meg Ha az opció: long - a számok 14 számjegy pontossággal íródnak ki short e -a számokat t4 tizedes pontossággal e-s alakban lkb írja íj ki long e - a számokat 14 tizedes pontossággal e-s alakban írja ki + -csak a szám előjelét írja ki bank - a számokat 2 tizedes pontossággal írja ki rat - a számokat tört formába írja ki echo - segítségével a programok szövegét írathatjuk ki a parancssorba 2010.09.21. I. előadás 9
Változók neve lefoglalt szavak A változók neveit betűkből vagy számjegyekből állíthatjuk össze, amelyből azelső jel betű kell, hogy legyen. Különbség van a nagy és kisbetűk között. Bizonyos betűkombinációkat tanácsos kihagyni. Az alábbi kulcsszavakhoz nem tudunk értéket hozzárendelni break, case, colon, continue, else, elseif, end, for, if, otherwise, switch, while Matlab utasításokban gyakran előforduló szavak clear, help, helpdesk, helpwin, lookfor, ver, who, load stb. Standard változók amelynek a Matlab ad értéket ans - név nélküli eredmény neve clock - pillanatnyi időt adjameg cputime - Matlab indítása óta eltelt idő i, j - komplex számok képzetes egysége Inf végtelen, nullával való osztás eredménye NaN - not a number, nem szám, mint 0/0 pi - az egység kör területe realmax - 2,2251e-308 a legnagyobb lebegőpontos szám értéke realmin - 1,7977e+308 legkisebb pozitív lebegőpontos szám értéke tic - 0-ra állítja a kezdőértéket a toc számára toc - a legutolsó tic utasítás óta eltelt időt adja meg másodpercekben clear minden változót töröl, a lefoglalt változók numerikus értékét visszaállítja 2010.09.21. I. előadás 10
Numerikus változók A változók deklarálása érték adással történik. A Matlab a megadott érték alapján dönti el, hogy milyen típusú adatot tárolunk majd benne. változó = kifejezés Példa. >> a=11 a = 11 Létrejön az a változó, mint egy 1x1-es 1 mátrix, értéke 11. Számok használata Pl. 3 99 0.0001 9.6397238 1.60210e 20 6.02252e23 2+3i 1.23+23.56i 2010.09.21. I. előadás 11
Műveletek Aritmetikai operátorok: + (összeadás), - (kivonás), * (szorzás), / (osztás), ^ (hatványozás), \ (inverz osztás). Pl. Számítsuk ki egy gömb térfogatát R=2; Terfogat=(4/3)*pi*R^3 Példa inverz osztásra >>d=2\1 d= 0.5000 A kifejezések kiértékeléséhez a Matlab bevezeti a precedencia szabályt. >>a/b^2 Ez azt jelenti, hogy az egyes műveletek rangsorolva vannak, és a kiszámítás csökkenő rang szerint történik: azazelőször a legmagasabb percedenciájú műveletek, majd az eggyel alacsonyabb rangú, es így tovább hajtódnak végre. Az operátorok precedencia sorrendje: 1. ^ 2. +, - (előjel) 3. *,.*, /,./,/ \ 4. +, - (összeadás, kivonás) 5. : (colon) Azonos precedenciájú műveleteket balról jobbra haladva végezzük. Sok esetben szükség van a precedencia- vagy a balról-jobbra sorrend megváltoztatására, akkor ezt a kerek zárójelek segítségével érhetjük el. >> (a+b+c)/3 2010.09.21. I. előadás 12
Karakterláncok tárolása A karakterlánckt típusú változó dkl deklarálása éték értékadással történik, aposztrófok közé téve a szöveget. >>s= 'almafa' A karakter tényleges tárolása, a Matlab az ASCII kódjukat tárolja, kísérő információval. Az utóbbi utal arra, hogy itt nem egy közönséges egész számról van szó, hanem karakterről. k 2010.09.21. I. előadás 13
Ascii táblázat 2010.09.21. I. előadás 14
A változóban akkor is egy numerikus adat van tárolva, ha karakterlánc változó. >> x=20, s='20' x= 20 s= 20 Az utasításokra adott válasz között látszólag nincs különbség. >> x=x+2, s=s+2 x= 22 s= 52 50 A 2-es számot numerikus adatként adja a karaktereket tartalmazó vektorhoz, azaz a ott tárolt ASCII kódokhoz. Ilyenkor az eredmény numerikus adat lesz. Tehát fontos tudni egy változóról, hogy milyen tulajdonságú. 2010.09.21. I. előadás 15
Függvények karakterláncokkal length(sz) double(sz) char(kod) deblank(sz) Karakterlánc hosszát adja meg Karakterek Ascii kódjait téríti vissza Ascii kódokhoz hozzárendelt karaktereket jeleníti meg a karakterlánc végén található szóközeket levágja ischar(sz) 1 ha argumentuma string 0 különben isletter(sz) karakterenként vizsgálja a karakterláncot és egy vektor megfelelő indexű elemét 1-re vagy 0-ra állítja, attól függően, hogy a szóban forgó karakter betű-e vagy sem isspace(sz) karakterenként vizsgálja a karakterláncot és egy vektor megfelelő indexű elemét 1-re vagy 0-ra állítja, attól függően, hogy a szóban forgó karakter szóköz-e vagy sem int2str(x) num2str(x) egész számot szöveggé alakít valós számot 4 tizedes pontossággal szöveggé alakít mat2str(x) valós számot szöveggé alakít str2num(sz) szöveget számmá alakít 2010.09.21. I. előadás 16
Függvények karakterláncokkal strcat(sz1,sz2) strvcat(sz1,sz2) sz2) strcmp(sz1,sz2) vízszintesen kapcsolja össze argumentumait, összekapcsolandó karakterláncok végén található szóközeket elhagyja. függőlegesen kapcsolja össze az argumentumait összehasonlítja a paraméterként beírt karakterláncokat 1 ad vissza ha a kettő tökéletesen megegyezik strncmp(sz1,sz2,n) csak az első ő n karaktertkt t hasonlítja össze findstr(sz1,sz2) a két karakterlánc közül a rövidebbet keresi a másikban, valahányszor megtalálja, a kezdőpozíciót kiírja a kimenő sorvektorba strrep(sz1,sz2,sz3) az első paraméterében megkeresi a másodikként megadott karakterláncot, és valahányszor megtalálja, kicseréli a harmadik ad paraméterre a e strtok(sz1,sz2) upper(sz) lower(sz) az első paraméterét kettévágja ott, ahol a második paraméterét először megtalálta nagybetűkké alakít kisbetűkké alakít 2010.09.21. I. előadás 17
Algoritmusok Algoritmusnak nevezzük valamely feladat megoldására szolgáló lépések véges számú sorozatát. Lépésnek egy-egy egyértelműen megfogalmazott szabály alkalmazását tekintjük. Milyen ismérvekkel kell rendelkeznie minden algoritmusnak? Végesség, Meghatározottság, Kimenet, Bemenet, Hatékonyság. A számítógép működése közben a programozó által meghatározott alkalmas és érthető módon leírt (a számítógép gpszámára érthető módon leírt) algoritmusokat hajt végre. 2010.09.21. I. előadás 18
2010.09.21. I. előadás 19
Pascal program program tombok; uses Crt; Var t:array[1..20] of integer; i,n:integer; begin ClrScr; Write( Kérem a tömb elemeinek a számát = ); Readln(n); for i:=1 to n do begin write('tömb[',i,']='); readln(t[i]); end; for i:=1 to n do write(t[i]:4); Readln; end. Matlab program t=input('tomb=') 2010.09.21. I. előadás 20
Matlab programozás Matlabban létrehozhatunk *.m állományokat, ezeknek 2 típusa van: Scriptek parancssorozat Függvények saját függvény létrehozása. Scriptek használata File/New/M-file parancs hatására megjelenik egy szövegszerkesztő, ahol megírhatjuk a parancssort (utasítássort), lementhetjük (F5) majd parancsablakban a lementett ttnévvel lhivatkozva lefuttathatóak th tó a bít beírt parancsok. A % jel után megjegyzések írhatók, ezeket a megjegyzéseket gy a Matlab a program végrehajtása során, figyelmen kívül hagyja. 2010.09.21. I. előadás 21
Adatátvitel képernyőre Beolvasás Input utasítás x=input(kar) a kar karakterlánc kiíródik a képernyőre, és a gép várja az x beadását a billentyűzetről. kar1=input(kar, s ) - a kar karakterlánc kiíródik a képernyőre, és a gép várja az kar1 karaktersorozat beadását a billentyűzetről. Kiiratás Legegyszerűbb módja, ha a változókat felsoroljuk, vagy az utasítás végén lehagyjuk a pontosvesszőt. >>a, b Disp utasítás Disp(a) az a argumentum kiíródik a képernyője 2010.09.21. I. előadás 22
Hibaüzenetek Az állománynak proba 23.m nevet adtunk. (állománynévben nem szerepelhet szóköz) Az állománynak 23.m nevet adtunk. (állománynévben nem kezdődhet számjeggyel) Karakterlánc beolvasásánál az input utasításban elmaradt a s argument Elíródott az input parancsszó. Jelzi, hogy nem ismerte fel a parancsot és hogy hányadik sorban található a hiba. 2010.09.21. I. előadás 23
, helyett. tettünk Elhagytunk egy ( helyett [ tettünk Ha rosszul adtuk meg a függvény argumentumait. Jelzi melyik utasításnál van a hiba, hányadik sorban. 2010.09.21. I. előadás 24