A MATLAB alapjai Atomerőművek üzemtanának fizikai alapjai - 2016. 03. 04. Papp Ildikó Kezdő lépések - Matlab Promt: >> - Help: >> help sqrt >> doc sqrt - Kilépés: >> quit >> exit - Változók listásása >> who >> whos - Változók törlése >> clear... >> clear all - Változók mentése, betöltése >> save result >> load result Részei Változók Aktuális mappa Parancs ablak Előzmények 1
MATLAB, mint számológép Számoljuk ki a következő kifejezéseket! MATLAB parancs megjegyzés 1 49 sqrt(49) Ans (answer): utolsó eredmény 2 7 2 7^2 hatvány 3 π pi Beépített konstansok 4 i j, i, 1 Komplex számok kezelése 5 3 2 + 1 2 i sqrt(3)/2+1/2i 6 x = 5 x = 5; 7 8 6 0 Vektorok és mátrixok Értékadás, eredménykiíratás nélkül 6/0 Inf: végtelen inf/inf Hozzuk létre a következő objektumokat! Fontos: Az indexelés 1-től indul. NaN: Not a number Objektum Létrehozása Matematikai jelölés 1 Sorvektor s = [1 2] vagy s = [1, 2] s = (1 2) 2 Oszlopvektor o = [1; 2] o = ( 1 2 ) 3 Vektor i. eleme s(1) s 1 4 Mátrix A = [1 2; 3 4] ( 1 2 3 4 ) 5 Mátrix (i,j) eleme A(i,j) A ij 6 Mátrix sora A(1,:) = [1;3] (a 11 a 12) = (1 2) 7 Mátrix oszlopa A(:,1) = [1 2] ( a 11 a 21 ) = ( 1 3 ) Speciális mátrixok 1 0 0 1 Egységmátrix eye(3) ( 0 1 0) 0 0 1 2 Diagonális mátrix diag(s) vagy diag([1,2]) ( 1 0 0 2 ) 2
Műveletek vektorokkal, mátrixokkal 1 Transzponálás (konjugálás) o = s vagy o = [1 2] ( 1 ) = (1 2)T 2 2 Invertálás A^(-1) vagy inv(a) ( 1 2 3 4 ) 1 3 Vektor hossza length(s) Pl.: 2 4 Mátrix dimenzója sizes (A) Pl.: 2x2 5 6 Elemenkénti művelet végrehajtás Szorzás (Dimenzióknak egyezniük kell!) A.^2 ( 12 2 2 3 2 4 2) A*s vagy [1 2; 3 4]*[5 6] ( 1 2 ) (1 2) 3 4 7 Skalár szorzat [1 2]*[3;4] (1 2) ( 3 4 ) 8 Összeadás, kivonás A + B, [1 0; 0 1]+[0 1; 1 0] a + b, [1 2] + [2 3] DE NEM! [1 2] + [2; 3] ( 1 0 0 1 ) + (0 1 1 0 ) (1 2) + (2 3) 1) Legyen a = {1 4 5 0}, b = {4 6 2 11}! Számoljuk ki MATLAB segítségével egyetlen parancsorban, mekkora a két sorozat között a maximális kölünbség! (Segítség: Mit csinál a max() függvény egy vektorral? +Mit csinál egy mátrixxal?) 2) Keressük meg a következő mátrix legkisebb elemét MATLAB parancsokkal! (Használjuk a min() függvényt!) 1 3 0.5 ( 2 5 7 ) 6 2 5 3.33 9 12 3) Mi a különbség a következő utasítások között? (A és C mátrixok) a >>A*C >>A.*C b >>A^2 >>A.^2 c* >>exp(a) >>expm(a) 4) Adjuk meg egyetlen Matlab-utasítással azt a 10-szer 10-es mátrixot, amelynek - bal felső 5-ször 5-ös blokkja olyan tridiagonális mátrix, amelynek főátlójában -2-esek, két mellékátlójában pedig 1-esek állnak (tridiag[1, -2, 1] típusú) - jobb alsó 5-ször 5-ös blokkja tridiag[2, -4, 2] típusú - a többi eleme pedig 0! 3
M állomány (.m kiterjesztésű fájlok) m-fájl: MATLAB utasításokat tartalmazó szöveg fájl M-fájl készítése és futtatása Nyissunk meg egy MATLAB szövegszerkesztőt: File/New/Script vagy M-file (vagy más szövegszerkesztőt és a fájlt.m kiterjesztéssel mentsük el). Töltsük fel a következő tartalommal: A = [1 2; 3 4; 5 6] B = [7 8 9; 10 11 12] sz = A*B Mentsük el (pl. szorzat.m) majd futassuk le a Debug/Run menüponttal! Futassuk le MATLAB promptból az elmentett fájl nevével (pl. szorzat)! Mi történik, ha pontosvesszőket teszünk a sorok végére? Függvények Egyváltozós Készítsünk el egy f.m nevű állományt az aktuális könyvtárban a következő tartalommal: function y = f(x) y = x^3+x^2-2; Számoljuk ki y függvény értékét x=2 helyen! (f(2)) Többváltozós Írjunk függvényt az A és B mátrix kommutátorának kiszámítására! function X = komm(a,b) X = A*B-B*A; Próbáljuk ki konkrét mátrixokal! Beépített függvények Trigonometriai: sin(x), cos(x), atan(x),... Véletlenszám generálás: Generáljunk 10 db egész véletlenszámot 0 és 10 között! floor(rand(1,10)*10) Debugolás kulcsszavak pause: a program végrehajtása megáll, gombnyomásra folytatódik input: a felhasználótól adatot kérhetünk futás közben Kommentelés %komment 5) Írjunk egy kétváltozós függvényt, amely egy háromszög két oldalának hosszát kapja bemenő paraméterként, a köztük lévő szöget (0-180) fok között egyenletes eloszlással sorsolja ki, és eredményként a harmadik oldal hosszát adja meg! 4
MATLAB programozási nyelve For ciklus Készítsünk el az első 10 pozitív természetes szám négyzetéből álló vektort! for i=1:10, x(i)=i^2; end vagy for i=1:10 x(i)=i^2; end vagy for i=10:-1:1, x(i)=i^2; end While ciklus Határozzuk meg azt a legkisebb n egész számot, amelyre 2-nek az n-edik hatványa legalább a. n=0; while 2^n<a, n=n+1; end Megjegyzés: n+=1; nem jó! Feltételek Adjuk össze azokat a= [1, 45, 32, 6, 78, 32, 4, 65, 12, 19] vektorban azokat az elemeket, amelyek oszthatók 3-mal! x=0; a= [1, 45, 32, 6, 78, 32, 4, 65, 12, 19]; for i=1:length(a) if (mod(a(i),3))==0) x=x+a(i) end end Szükséges relációs jelek < (kisebb, mint) > ( nagyobb, mint) <= (kisebb vagy egyenlő) >= (nagyobb vagy egyenlő) == (egyenlő) ~= (nem egyenlő) Az == jel csak a relációkban használatos, értékadásra az = jel való. A relációkat a & (= AND = ÉS) (= OR = VAGY) ~ (= NOT = NEM) jelekkel kapcsolhatjuk össze. 6) Írjunk olyan Matlab-programot, amely 1-től 100-ig összeadja az egész számokat! 7) Írjunk függvényt, amely meghatározza kész szám legkisebb közös többszörösét! 5
Grafika Függvény ábrázolása Rajozoljuk fel a sinus függvényt a [-4,4] intervallumon! x=-4:0.1:4; y=sin(x); plot(x,y) Próbáljuk ki a következő beállításokkal is! Mit tapasztalunk? plot(x,y, r ) plot(x,y, g ) plot(x,y, * ) plot(x,y, o ) plot(x,y,. ) 1 0.8 0.6 0.4 0.2 0-0.2-0.4-0.6-0.8-1 -4-3 -2-1 0 1 2 3 4 Egyszerre több függvény ábrázolása Ábrázoljuk egymás mellett a cosinus és a sinus függvényeket a [-4, 4] intervallumon! x=-4:0.1:4; y=sin(x); z=cos(x) plot(x,y, r,x,z, g ) Beállítások Kezdő és végpontok: axis([xmin xmax ymin ymax]) Cím adása (lehet Latex kódot is használni): title( A sin es a cos fuggveny ) Jelölések magyarázatának hozzáadása: legend( sin, cos ) 8) Készítsünk egy olyan M-fájlt, amely ábrázolja a [-2,2] intervallumon az f(x) = x 2 + 1 függvényt! 9) Szimuláljunk egy mérési adatsort! Adjunk hozzá a fenti egy y= sin(x) adatsorhoz 0.25 amplitúdójú egyenletes zajt. Ábrázoljuk a zaj nélküli adatokkal egy ábrán! 10) Végezzünk számjegy gyakoriság próbát a rand függvény egy tetszőleges helyiértékén, az eredményt ábrázoljuk hisztogrammon. Hasonló ingyen elérhető programok: - Scilab - Freemat - Octave Forrás Hujter Mihály: Betekintés a MATLAB programrendszerbe 6