. Feladatlap Információkérési lehetıségek help utasítás help - leírásokat tartalmazó alkönyvtárak listáját írja ki help alkönyvtár_név a megadott alkönyvtárban található kulcsszavak listáját írja ki help kulcsszó a kulcsszó konkrét jelentését adja meg lookfor utasítás lookfor keresı_szó az általunk megadott szövegrészletet keres a kulcsszavak leírásának elsı sorában. helpwin parancs hatására külön ablakban megjelenik az alkönyvtárak listája. 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 Pl. >> a= a = Létrejön az a változó, mint egy x-es mátrix, értéke. Számok használata Pl: 99 0.000 9.6978.600e 0 6.05e Mőveletek Matlab nyelvben 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=; Terfogat=(/)*pi*R^ Példa inverz osztásra >>d=\ d= 0.5000 Beépített konstansok pi -pi értéke 6 számjegyes pontossággal realmin,5e-08 legkisebb valós szám realmax,7977e+08 legnagyobb valós szám Inf -Végtelen, /0-féle osztás eredménye NaN -nem szám (Not-a-number) Pl. 0/0, Inf-Inf i vagy j - Komplex egység Trigonometriai függvények sin(x) asin(x) cos(x) acos(x) tan(x) atan(x) sinh(x) cosh(x) tanh(x) asinh(x) acosh(x) atanh(x) Más matematikai függvények abs(x) -x abszolút értéke sqrt(x) - x négyzetgyöke real(x) -Az x komplex szám valós része imag(x) -Az x komplex szám imaginárius része round(x) -Kerekítés a legközelebbi egészhez fix(x) -Zéró felé kerekítés floor(x) - felé kerekítés ceil(x) + felé kerekítés sign(x) + ha x pozitív, - ha x negatív. exp(x) -e x log(x) -e alapú logaritmus log0(x) -0-es alapú logaritmus date -mai dátum clock pillanatnyi idıt adja meg 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 clc képernyıtörlés
Matlab programozás Matlabban létrehozhatunk *.m állományokat, ezeknek típusa van: Scriptek parancssorozat 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 névvel hivatkozva lefuttathatóak a beírt parancsok. A % jel után megjegyzések írhatók, ezeket a megjegyzéseket a Matlab a program végrehajtása során, figyelmen kívül hagyja. Adatátvitel képernyıre Legegyszerőbb módja, ha a változókat felsoroljuk, vagy az utasítás végén lehagyjuk a pontosvesszıt. 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. [x,y,z]=input(kar) három beadandó számmal kar=input(kar, s ) - a kar karakterlánc kiíródik a képernyıre, és a gép várja az kar karaktersorozat beadását a billentyőzetrıl. Disp utasítás Disp(a) az a argumentum kiíródik a képernyıje Példaprogramok:. Írjunk programot, amely kiszámítja és kiírja a téglalap területét és kerületét. a=input('kerem a teglalap hosszat='); b=input('kerem a teglalap szelesseget='); Terulet=a*b Kerulet=*(a+b). Feladatlap Karakterláncok: A karakterlánc típusú változó deklarálása é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. Az ASCII kódok lekérdezése, double függvénnyel. >> double('alma') % a sorvektorban az ASCII kódok találhatók 97 08 09 97 Ha egy karakterlánchoz számot adunk hozzá, numerikus adatot kapunk eredményül, egy vektor, ahol a karaktereknek megfelelı ascii kódokon végzıdik el a mővelet. >> s='almafa'; >> s=s+ s = 00 00 05 00 Egy számhoz hozzárelt karakterláncot a char utasítással kérdezhetjük le. >> char(5) - A karakterlánc egy betőjére való utalás: változó(index) >> s='alma'; >> s() l Karakterlánc beolvasása input utasítással kar=input(kar, s ) - a kar karakterlánc kiíródik a képernyıre, és a gép várja az kar karaktersorozat beadását a billentyőzetrıl. Példaprogram. Egy karakterlánc karaktereinek ASCII kódjait írjuk ki a képernyıre. sz=input('nev=','s'); Asciikodok=double(sz)
. Egy karakterlánc karaktereinek ASCII kódjait toljuk el egy bekért számmal, milyen kódolt szöveget kapunk így. sz=input('karakterlanc=','s'); k=input('szam='); sz=sz+k; kodoltszoveg=char(sz) deblank(sz) a karakterlánc végén található szóközeket levágja ischar(sz) - ha argumentuma sztring 0 különben isletter(sz) karakterenként vizsgálja a karakterláncot és egy vektor megfelelı indexő elemét -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 -re vagy 0-ra állítja, attól függıen, hogy a szóban forgó karakter szóköz-e vagy sem strnum(sz) - szöveget számmá alakít Mőveletek karakterláncok között strcat(sz,sz) - vízszintesen kapcsolja össze argumentumait, összekapcsolandó karakterláncok végén található szóközeket elhagyja. strvcat(sz,sz) - függılegesen kapcsolja össze az argumentumait strcmp(sz,sz) - összehasonlítja a paraméterként beírt karakterláncokat ad vissza ha a kettı tökéletesen megegyezik strncmp(sz,sz,n) - csak az elsı n karaktert hasonlítja össze findstr(sz,sz) - 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(sz,sz,sz) - az elsı paraméterében megkeresi a másodikként megadott karakterláncot, és valahányszor megtalálja, kicseréli a harmadik paraméterre strtok(sz,sz) - 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 strjust(sz) - a végén található szóközeket a karakterlánc elejére teszi strmatch(sz, [sz,sz,...]) - soronként vizsgálja második argumentumát, melyik kezdıdik az elsıvel, a visszatérı érték olyan oszlopvektor, melyben az igent eredményezı sorok indexei vannak 5. Feladatlap Vektorok A Matlab számára az alapvetı vektortípus a sorvektor. Vektorok megadása: sorvektor: >> x=[0-9] x= 0-9 vagy vele ekvivalens formában 6 >> x=[0,-,,9] x= 0-9 Egyenköző vektor megadása a : operátor illetve a linspace függvénnyel történik: kezdıérték : lépésköz : végsıérték - ha a lépésköz, akkor megadását el lehet hagyni linspace(elsı_elem,utolsó_elem, elemek_száma) >> V=-: V = - 0 >> V=6:-:- V = 6 0 - - oszlopvektor: >> y=[;;;] y= megadhatjuk így is (sor vektor transzponáltja): >> y=[ ] vagy >> y=[,,,] Elemekre való hivatkozás, kiíratás: >> x() ans= >>V=linspace(0,0,6) V = 0 8 6 0 Vektorok bıvítése (új elem hozzáadása): Sorvektor esetében >>x=[ 0 - ] >> x=[x 6] vagy >> x(5)=6 ha ebben az esetben azt írnánk, hogy x(5)=, akkor az 5. elemtıl a. elemig a vektor elemei mind 0 lesznek.
Oszlopvektor esetében >>x=[; 0; -; ] >> x=[x; 6] vagy >> x(5)=6 mivel a Matlab már tudja, hogy x oszlopvektor Példák bıvítésre >>x=[ -] >>y=[; ; ] >> s=[x y'] s = - >>z=[x :] z = - >>b=[y; 7; 9; ] b = 7 9 >> t=[x';y] t = - >> a=[x linspace(,, )] a =.000.000 -.000.000..667.000 >>c=[y; (:) '] c = 7 >>d=[y; linspace(,7,)'] d =.0000.0000.0000.0000.5000 7.0000 Részvektorok készítése Ha egy vektor páratlanindexő komponenseire van szükségünk >> x=[ 5 6] >>z=x(::6) z = 5 Ha egy vektor elsı elemét szeretnénk feldolgozni >>v=x(:) v = Vektormőveletek: Ha x, y két egyforma hosszú és formájú vektor, akkor lehet használni a +, -,.*,./ mőveleteket (elemenkénti összeadás, kivonás, szorzás, ill. osztás). >> x=[ ]; >>y=[ ]; >>x+y 5 7 >>x-y - - - 8 >> x.*y 6 >> x.*y 0.5000 0.6667 0.7500 skalár szorzat: két egyforma elemszámú de különbözı formájú (egyik sormásik oszlopvektor kell legyen) vektor között: * >> x*y 0 hatványozás elemenként: >>x.^0.5.0000..7 sum(x) - Összeadja az x vektor elemeit. max(x) - Megkeresi az x vektor legnagyobb elemét. min(x) - Megkeresi az x vektor legkisebb elemét. sort(x) - Növekvı sorrbe rezi az x vektor elemeit. fliplr(x) - Sorvektor elemeit fordított sorrbe adja vissza. flipud(x) - Oszlopvektor elemeit fordított sorrbe adja vissza. length(x) - vektor hosszát adja meg. Polinomok x +x +x+ polinom megadása P=[ ] polyval(p,t) - polinom értékét számítása x=t-ben conv(p,q) - polinomokat szoroz deconv(p,q) - polinomok osztása poly(r) r vektorban megadott gyökök alapján megadja a polinomot roots(p) polinom gyökeit adja meg polyder(p) - deriválja a p polinomot polyder(p,q) a p*q polinom szorzatot deriválja [Sz N]=polyder(p,q) - a p/q polinomok osztását deriválja Példaprogram Írasd ki egy vektor egy kért elemét. x=input('vektor='); i=input('hanyadik elem='); x(i)
. Feladatlap Mátrixok Értékadás: elemek felsorolásával: a sor elemeit szóközzel vagy vesszıvel kell elválasztani, a sorok végét pontosvesszı jelöli, az elemek függvényként is megadhatók. A mátrix lehet négyzetes vagy téglalap alakú, valós vagy komplex, teljesen kitöltött vagy ritka. >>A=[ 6 0; - ; 0 - ] 6 0-0 - >> B=[ ; ^ sin(5) 6*pi ; 7, 8, 9] B =.0000.0000.0000 6.0000-0.9589 8.896 7.0000 8.0000 9.0000 létrehozás mátrixgenerátorokkal: zeros(n,m) - nxm elemő mátrix, melynek minden eleme nulla. ones(n,m) - a mátrix minden eleme. eye(n,m) - az átlóban -esek vannak (egységmátrixok megadására). rand(n,m) véletlenszerő elemekkel tölti fel az nxm-es mátrixot. Négyzetes mátrixok generálásánál elég csak egy paramétert megadni. >> zeros(,) 0 0 0 0 0 0 >> ones(,) >> eye(,) 0 0 0 0 >> eye() 0 0 0 0 0 0 >> d=0*rand() 8.850 7.07 6.95 5.6807 5.657 6.58.705.587 7.958 >> fix(d) egész rész 8 7 6 5 5 6 7 Hivatkozások a mátrix elemeire, soraira, oszlopaira illetve blokkjaira (az indexelés mindig -tıl kezdıdik): A(i,j) i. sor j. eleme. Ha az index nem egész, a Matlab hibát jelez. Mátrix elemekre hivatkozhatunk egyetlen egy indexszel is az oszlopfolytonos tárolásnak köszönhetıen. A(j*(n-)+i) az A(i,j) elemnek felel meg, ahol n a sorok száma A(i,:) i. sor A(:,j) j. oszlop A(i,j:m) az i-ik sor (m-j+) eleme: a j. oszloptól az m. oszlopig A(i:n,j:m) (n-i+)x(m-j+)-es blokk: az i-m. sor j-n. elemeit adja meg A([i,n],[j,m]) x-es mátrix az A mátrix i. és n. sorában levı j. és m. elem. >> A(,5) 0 >> A(:,5) 5 0 5 0 Mátrixmőveletek >> A=[ 5 ; 6 7 8 9 0 ; 5 ; 6 7 8 9 0] 5 6 7 8 9 0 5 6 7 8 9 0 >>A(8) 0 >> A(,:) 5 >> A(:,:) 7 8 9. tipikus mátrixalgebrai mőveletek (mátrixszorzás, inverz, transzponált). elemenkénti mőveletvégzés, a mőveleti jel elé pontot teszünk (összeadás, kivonás, szorzás, osztás: +, -,.*./) >> A=[; ]; >> B=[5 -;7 ]; >> C=A+B C = 6-0 6 >> D=A-B D = - - >> C=A*B C = 0 >> D=A.*B D = 5-8 Baloldali osztás és elemenkénti hatványozás >>K=A\B >>L=A.^B K = L =.0000-0.0000-8.0000 8.0000 87 6 >> E=A/B E = -0.08 0.97-0.967.08 >> F=A./B F = 0.000-0.5000 0.86.0000 Mátrixok bıvítése: A vektoroknál ismert lehetıségeket alkalmazhatjuk. >> A=[; ]; >>C=[A [ ] ] C = >>D=[A; [- ]] D = - >>M=.^A M = 8 6 >> H=A^ H = 5 5 9 >> I=A.^ I = 9 6 9 0
>>A(,)= 0 >>A(,)= 0 0 0 0 0 0 0 0 0 0 Sorok, oszlopok törlése: >>X = A; >>X(:,) = [ ] X = 0 0 0 0 0 0 0 0 0 sort(x) - Ha x mátrix, akkor a rezés oszloponként történik. sum(x) - Ha x mátrix akkor összeadja oszlopait (eredmény egy vektor) max(x) - Ha x mátrix, az eredmény egy sorvektor: az oszlopok maximum értékei min(x) - Mátrix oszlopainak minimum értékét adja meg find(feltétel) - a feltételt teljesítı elemeket adja meg diag(x) - a mátrix fıátlóját adja meg diag(x,k) - a mátrix k. átlóját adja meg reshape(x,n,m) - újra méretezzük a mátrixot, nxm-es alakba. tril(x) - az x mátrix fıátló feletti elemeit lenullázza triu(x) az x mátrix fıátló alatti elemeit lenullázza det(x) - a mátrix determinánsát számolja ki inv(x) - a mátrix inverzét adja meg rank(x) - a mátrix rangját adja meg Egyenletrszerek megoldása x x = 5 x+ x = 6 AX=B A=[ ; ] B=[-5;6] X=inv(A)*B vagy X=A\B Példaprogram Generáljunk egy bekért nagyságú négyzetes mátrixot. n=input('sorok szama='); 5*rand(n) 5. Feladatlap Relációs operátorok A reláció legegyszerőbb esetben két valós szám egymáshoz való viszonyára utaló állítás. Egy relációhoz egyértelmően hozzárelhetjük a két logikai érték valamelyikét: az igaz (true) vagy a hamis (false) értéket. Ezt a Matlab két számmal reprezentálja, -gyel, illetve 0-val. A Matlabban érvényes relációk: Kisebb Kisebb vagy egyenlı Nagyobb Nagyobb vagy egyenlı Egyenlı Nem egyenlı < <= > >= == ~= Három logikai mőveletet definiált a Matlab: Negáció ~ És & Vagy If utasítás A Matlab a döntések meghozatalát szolgáló feltételek vizsgálatára és a döntés végrehajtására az if utasítás szolgál. Az utasítás általános alakja:. pszeudókódban: Ha <feltétel> akkor <utasítás> különben <utasítás> (Ha) vége vagy hiányozhat, a különben ág: Ha <feltétel> akkor <utasítás> (Ha) vége Megj: <>-ben vannak a változtatható részek!. Matlabban: if logikai_feltétel utasítás(ok) utasítás(ok)
Az ág hiányozhat: if logikai_feltétel utasítás(ok) Több if utasítást egymásba is lehet ágyazni, azaz if utasításon belül egy újabb if utasítást adunk meg. De a Matlabban ilyen helyzetek megoldására tovább fejlesztették az if utasítás. if logikai_feltétel utasítás(ok) if logikai_feltétel utasítás(ok) utasítás(ok) Példaprogramok: ami ekvivalens if logikai_feltétel utasítás(ok) if logikai_feltétel utasítás(ok) utasítás(ok). Készítsünk programot, mely beolvas egy számot, majd eldönti, hogy pozitív-e vagy sem. A szöveget egy adott helyre írassuk ki: a=input('a='); if a>0 disp('a szam pozitiv') disp('a szam negative vagy nulla'). Olvassunk be két számot döntsük el melyik a nagyobb. a=input('a='); b=input('b='); if a>b disp('a nagyobb mint b') if a==b disp('a egyenlo b') disp('a kisebb mint b') 6. Feladatlap For utasítás Ha a programon belül bizonyos utasításokat egymás után többször kell elvégeznünk, de tudjuk, elıre, hogy pontosan hányszor, akkor a for utasítást kell használjuk. Az utasítás általános alakja: for változó= kezdeti_érték:lépés:végsı_érték utasítás(ok) Ebben az esetben az utasítások a : operátor által megadott számszor hajtódnak végre. Példaprogramok:. Egy bekért számig írd ki a számok négyzeteit. n=input('n='); for i=:n disp(i^). Olvass be egy karakterláncot, minden harmadik karakterét írasd ki a képernyıre. sz=input('szoveg=','s'); for i=::length(sz) disp(sz(i)) sz=input('szoveg=','s'); for i=:length(sz) if mod(i,)==0 disp(sz(i))