1. Előadás Matlab lényeges vonásai, adattípusok. 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 nyelv. 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 lá iók létrehozni lé h i és é megjeleníteni, j l í i de d akár ká önálló ö álló alkalmazásokat lk l á k is i meg lehet l h benne b 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, vektorok, mátrixok többdimenziós tömbök, 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 k kapcsolatot l lé h i 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) 2) 3) 4) 5) 6) 7)
Matlab lényeges vonásai, adattípusok; Numerikus lineáris algebra; Logikai operátorok és függvények, logikai kifejezések, feltétel vizsgálata, elágazások; Ismétlő struktúrák a Matlabban (for, while utasítások); Matlab függvények, adatfeldolgozás, állományok kezelése; Matlab grafikus lehetőségei, 2D, 3D-s grafikák - plot l t utasítás; t ítá - különböző koordináta rendszerek használata. Grafikus felhasználói felületek, eseményvezérelt programozás.
2010.09.21.
I. előadás
4
Laborok tematikája 1) 2) 3) 4) 5) 6) 7) 8) 9) 10) 11) 12) 13) 14))
Beolvasás, kiíratás a képernyőre. Változók bevezetése, műveletek változókkal. K k lá kk l való Karakterláncokkal ló műveletek; ű l k Műveletek vektorokkal; Műveletek mátrixokkal; Feltételes utasítások, utasítások if, if case struktúrák; Ismétlő struktúrák, for utasítás, véletlen számok generálása; Ismétlő struktúrák, while utasítás; Első zárthelyi dolgozat; Matlab függvények; Adatfeldolgozás, állományok kezelése; Matlab grafikus lehetőségei, 2D grafikák; M l b grafikus Matlab fik lehetőségei, l h ő é i 3D grafikák; fikák Grafikus felhasználói felületek, eseményvezérelt programozás. Guide program ismertetése; Második zárthelyi y dolgozat. g
2010.09.21.
I. előadás
5
Könyvészet y www.emte.siculorum.ro/~salamonjulia M. Ghinea, V. Fireteanu, Matlab Calcul numeric. Grafica. A li ii Teora Könyvkiadó, Aplicatii, ki dó Bucuresti, i 2003. 2003 Stoyan Gisbert, Matlab, Typotex Könyvkiadó, Budapest, 2005. Imre Lucaci Árpád, Imre-Lucaci Árpád Cormoş Ana Ana-Maria Maria, Matlab exemple şi aplicaţii în ingineria chimică, Presa Univ. Clujeană, Cluj Napoca, 2008. Brian D. D Hahn, Hahn Daniel T. T Valentine, Valentine Essential Matlab for engineers and scientists, Elsevier Könyvkiadó, Oxford, 2007. Radu Tiberiu Trimbitas, Analiză numerică. O introducere bazată pe MATLAB Presa MATLAB, P U i Universitară i ă Clujeană, Cl j ă 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özvetlenül lk á k listája. li áj Az egérrel é l kattintva k i k l l bonthatjuk b h j k ki az információkat, újabb ablakok nyílnak amelyekben előre hátra lapozhatunk. A helpdesk parancs egyenértékű a Help p p gy p /Full Family y Help p almenüpont p 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 e egyáltalán létezik-e 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 y 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 p pontossággal gg írja j ki az értékeket (alapbeállítás), ( p ), ezt a format short -nak felel meg Ha az opció: long - a számok 14 számjegy pontossággal íródnak ki short h t e - a számokat á k t 4 tizedes ti d pontossággal t á l e-s alakban l kb í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 az első 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 adja meg 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. 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ét jö az a változó, Létrejön ált ó mint i t egy 1x1-es 1 1 mátrix, át i értéke é ték 11. 11 Számok használata Pl. 3 –99 0.0001 9.6397238 1.60210e–20 6.02252e23 2+3i 1.23+23.56i 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= 00.5000 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: azaz elő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 *, 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 precedencia- vagy a balról balról-jobbra 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ánc k kt lá tí ú változó típusú ált ó deklarálása d kl álá é 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 h k k ől karakterről.
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ó. 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. vektorhoz, 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 gg y karakterláncokkal length(sz)
Karakterlánc hosszát adja meg
double(sz)
Karakterek Ascii kódjait téríti vissza
char(kod)
Ascii kódokhoz hozzárendelt karaktereket jeleníti meg
deblank(sz)
a karakterlánc végén található szóközeket levágja
ischar(sz) ( )
1 ha argumentuma g stringg 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)
egész számot szöveggé alakít
num2str(x)
valós számot 4 tizedes pontossággal szöveggé alakít
mat2str(x) ( )
valós számot szöveggé gg alakít
str2num(sz)
szöveget számmá alakít
2010.09.21.
I. előadás
16
Függvények gg y karakterláncokkal strcat(sz1,sz2)
vízszintesen kapcsolja össze argumentumait, összekapcsolandó karakterláncok végén található szóközeket elhagyja.
strvcat(sz1 sz2) strvcat(sz1,sz2)
függőlegesen kapcsolja össze az argumentumait
strcmp(sz1,sz2)
összehasonlítja a paraméterként beírt karakterláncokat 1 ad vissza ha a kettő tökéletesen megegyezik
strncmp(sz1,sz2,n) t ( 1 2 ) csakk az első l ő n karaktert k kt t hasonlítja h lítj ö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 a ad pa paraméterre a éte e strtok(sz1,sz2)
az első paraméterét kettévágja ott, ahol a második paraméterét először megtalálta
upper(sz)
nagybetűkké alakít
lower(sz)
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, Végesség, Meghatározottság Kimenet, Kimenet Bemenet, Bemenet Hatékonyság. 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 g p szá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
Matlab program
program tombok; uses Crt; C Var t:array[1..20] of integer; i,n:integer; begin g ClrScr; Write(’Kérem a tömb elemeinek a számát = ’); Readln(n); for i: i:=1 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. 2010.09.21.
I. előadás
tt=input('Tomb=') input( Tomb )
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 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 lefuttathatóak l t tt névvel é l hivatkozva hi tk l f tt th tó k a beírt b í t parancsok. k A % jel után megjegyzések írhatók, ezeket a a Matlab a pprogram végrehajtása során,, megjegyzéseket gj gy g g j 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ó. parancsszó Jelzi, 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