MATLAB. 1. A Matlabról



Hasonló dokumentumok
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

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

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

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

Matlab alapok. Vektorok. Baran Ágnes

MATLAB alapismeretek I.

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

Követelmények, Matlab alapok 1.

1. Előadás Matlab lényeges vonásai,

Matlab alapok. Baran Ágnes

Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Előfeldolgozó rendszer Tömbök. Dr. Bécsi Tamás 4. Előadás

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

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

Atomerőművek üzemtanának fizikai alapjai. MATLAB használata

Vektorok. Octave: alapok. A fizika numerikus módszerei I. mf1n1a06- mf1n2a06 Csabai István

MATLAB alapismeretek III.

Bevezetés a MATLAB programba

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

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

BASH script programozás II. Vezérlési szerkezetek

Matematikai programok

1. Alapok. #!/bin/bash

12. előadás. Egyenletrendszerek, mátrixok. Dr. Szörényi Miklós, Dr. Kallós Gábor

MATLAB. 6. gyakorlat. Integrálás folytatás, gyakorlás

Matematikai programok

MATLAB alapismeretek II.

BASH SCRIPT SHELL JEGYZETEK

Bevezetés a MATLAB használatába

MATLAB. 9. gyakorlat. Cellatömbök, struktúrák, fájlműveletek

Feladat Nézzük meg a súgóban (help és doc) a sin parancs használatáról olvasható információt! Próbáljuk ki a kirajzoltató utasítást.

MATLAB. 3. gyakorlat. Mátrixműveletek, címzések

Ismerkedés a Matlabbal

Egyenletek, egyenletrendszerek, egyenlőtlenségek Megoldások

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

Függvények ábrázolása

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

Algoritmusok Tervezése. 4. Előadás Visual Basic 1. Dr. Bécsi Tamás

MÁTRIXFÜGGVÉNYEK, SAJÁT FÜGGVÉNYEK, GRAFIKA

Függvények Megoldások

Vektorok, mátrixok, lineáris egyenletrendszerek

MATEMATIKA ÉRETTSÉGI TÍPUSFELADATOK MEGOLDÁSAI KÖZÉPSZINT Függvények

Operációs rendszerek. 11. gyakorlat. AWK - szintaxis, vezérlési szerkezetek UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Numerikus matematika

4. Előadás Programvezérlő utasítások. (begyakorló feladatok)

12 48 b Oldjuk meg az Egyenlet munkalapon a következő egyenletrendszert az inverz mátrixos módszer segítségével! Lépések:

SCILAB programcsomag segítségével

Baran Ágnes. Gyakorlat Vektorok, mátrixok, lineáris egyenletrendszerek. Baran Ágnes Matematika Mérnököknek

Baran Ágnes, Burai Pál, Noszály Csaba. Gyakorlat Differenciálegyenletek numerikus megoldása

MATLAB alapismeretek IV. Eredmények grafikus megjelenítése: vonalgrafikonok

Raszteres elemzés végrehajtása QGIS GRASS moduljával 1.7 dr. Siki Zoltán

MATEMATIKA ÉRETTSÉGI TÍPUSFELADATOK MEGOLDÁSAI KÖZÉP SZINT Függvények

Programozási segédlet

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport

MATEMATIKA ÉRETTSÉGI TÍPUSFELADATOK MEGOLDÁSAI KÖZÉPSZINT Abszolútértékes és gyökös kifejezések

Függvények július 13. f(x) = 1 x+x 2 f() = 1 ()+() 2 f(f(x)) = 1 (1 x+x 2 )+(1 x+x 2 ) 2 Rendezés után kapjuk, hogy:

Matlab alapok. Baran Ágnes. Baran Ágnes Matlab alapok Elágazások, függvények 1 / 15

Az egyenlőtlenség mindkét oldalát szorozzuk meg 4 16-al:

7. gyakorlat Sorozatok, Fájlkezelés

Felvételi tematika INFORMATIKA

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

MÁTRIXFÜGGVÉNYEK, SAJÁT FÜGGVÉNYEK, GRAFIKA 1.

egyenlőtlenségnek kell teljesülnie.

Feladat Nézzük meg a súgóban (help és doc) a sin parancs használatáról olvasható információt! Próbáljuk ki a kirajzoltató utasítást.

Programozás I. Matematikai lehetőségek Műveletek tömbökkel Egyszerű programozási tételek & gyakorlás V 1.0 OE-NIK,

Programozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek

rank(a) == rank([a b])

INFORMATIKA tétel 2019

AWK programozás, minták, vezérlési szerkezetek

Abszolútértékes és gyökös kifejezések Megoldások

A függvény kód szekvenciáját kapcsos zárójelek közt definiáljuk, a { } -ek közti részt a Bash héj kód blokknak (code block) nevezi.

Matematika 11. osztály

LEGO robotok. XII. rész

Feladatok MATEMATIKÁBÓL

A PiFast program használata. Nagy Lajos

MATEMATIKA ÉRETTSÉGI TÍPUSFELADATOK MEGOLDÁSAI KÖZÉPSZINT Függvények

Diszkrét matematika I., 12. előadás Dr. Takách Géza NyME FMK Informatikai Intézet takach november 30.

Lekérdezések az SQL SELECT utasítással

Tömbök kezelése. Példa: Vonalkód ellenőrzőjegyének kiszámítása

Jelek és rendszerek Gyakorlat_02. A gyakorlat célja megismerkedni a MATLAB Simulink mőködésével, filozófiájával.

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

4_Gnuplot1. October 11, Jegyzetben az 3. fejezet (36-től 52.-ig oldalig).

ECDL Táblázatkezelés A táblázatkezelés első lépései Beállítások elvégzése

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

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.

1. zárthelyi,

Programozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Exponenciális és logaritmikus kifejezések Megoldások

Nagy András. Feladatok a logaritmus témaköréhez 11. osztály 2010.

Mátrixok 2017 Mátrixok

Széchenyi István Egyetem. Műszaki számítások. Matlab 5a. előadás. Numerikus deriválás és integrálás. Dr. Szörényi Miklós, Dr.

1. Mátrixösszeadás és skalárral szorzás

KOVÁCS BÉLA, MATEMATIKA I.

az Excel for Windows programban

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

A legfontosabb DOS parancsok

Megjegyzés: A programnak tartalmaznia kell legalább egy felhasználói alprogramot. Példa:

Lineáris algebra (10A103)

6. Függvények. 1. Az alábbi függvények közül melyik szigorúan monoton növekvő a 0;1 intervallumban?

7. Laboratóriumi gyakorlat: Vezérlési szerkezetek II.

a) A logaritmus értelmezése alapján: x 8 0 ( x 2 2 vagy x 2 2) (1 pont) Egy szorzat értéke pontosan akkor 0, ha valamelyik szorzótényező 0.

Átírás:

MATLAB 1. 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 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 létrehozni és megjeleníteni, de akár önálló alkalmazásokat 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 2. A help használata >> help utasítás-név 3. Változók, értékadás, számok, konstans függvények, kifejezések, műveletek: >>változó = kifejezés Pl1. >> a=5 a = 5 Létrejön az a változó mint egy 1x1-es mátrix, értéke 5. Pl2. >> q=sin(5) q = -0.9589 Ha a sor végére pontosvesszőt írunk, az eredmény nem íródik ki. A MATLAB - ban vannak tárolt értékek, mint pl. a π szám. Értékét a pi paranccsal 1

(függvényyel) írathatjuk ki. A MATLAB 4 tizedes pontossággal írja ki az értékeket (alapbeállítás), ezt a >> format long utasítással állíthatjuk át 14 tizedesjegy pontosságra, és a >> format short paranccsal vissza. Más speciális függvények konstans értékekkel: Függvény érték megjegyzés Eps 2.2204e-16 felülírható: pl. >> eps=0.0001 majd visszaállítható: >> clear eps realmin 2,2251e-308 legkisebb valós szám realmax 1,7977e+308 legnagyobb valós szám Inf Végtelen NaN nem szám (Not-a-number) 0/0, Inf-Inf i vagy j 1 Komplex egység Date Mai dátum Számok használata Pl: 3 99 0.0001 9.6397238 1.60210e 20 6.02252e23 Aritmetikai operátorok: + (összeadás), - (kivonás), * (szorzás), / (osztás), ^ (hatványozás), \ (inverz osztás). Pl1. Számítsuk ki Vol= >>R=2; >>Vol=(4/3)*pi*R^3 Vol=33.5103 Pl2. >>d=2\1 d= 0.5000 logikai kifejezések: o egyenlőség == o nem egyenlő ~= o kisebb egyenlő, nagyobb egyenlő <=, >= o és: & o vagy: pl. >> if ((d==4) (c==1 & h<=7)) p=1 end who, whos parancs: változók lekérdezése 2

környezet (változók) mentése és betöltése: save állománynév és load állománynév 4. Vektorok és mátrixok vektorok meagadása pl. Sorvektor: >> x=[0 1.5 3 4.5] x= 0 1.5000 3 4.5000 oszlopvektor: >> y=[1;2;3;4] y= 1 2 3 4 megadhatjuk így is (sor vektor transzponáltja): >> y=[1 2 3 4] elemekre való hivatkozás, kiíratás: pl. >> x(3) ans= 3 vektor kibővítése ( új elem hozzáadása): pl. >> x(5)=6; vagy >>x=[x,6]; Egyenközű vektor megadása a,, : " operátor illetve a linspace függvénnyel: kezdőérték: lépésköz: végsőérték linspace(első_elem,utolsó_elem, elemek_száma) Pl1. >> V=-2:5 V =-2-1 0 1 2 3 4 5 Pl2. >> V=6:-2:-4 V = 6 4 2 0-2 -4 Pl3. >> V=linspace(0,20,6) V = 0 4 8 12 16 20 Vektorműveletek: o 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). 3

>> x=[1 2 3]; >>y=[2 3 4]; >>x+y 3 5 7 >> x.*y 2 6 12 o skalár szorzat: két egyforma elemszámú de kül. formájú (egyik sormásik oszlopvektor kell legyen) vektor között: * pl. >> x*y 20 o hatványozás elemenként: pl. >>x.^0.5 1.0000 1.4142 1.7321 Mátrixok (2 dimenziós vektorok) használata: Értékadás: o 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. Pl : >> A=[1 2 3 ; 4^2 sin(5) 6*pi ; 7, 8, 9] A = 1.0000 2.0000 3.0000 16.0000-0.9589 18.8496 7.0000 8.0000 9.0000 o létrehozás mátrixgenerátorokkal: zeros(m,n) - nxm elemű mátrix, melynek minden eleme nulla. ones(m,n) - a mátrix minden eleme 1. >> zeros(2,3) 0 0 0 0 0 0 eye(m,n) megadására). rand(m,n) véletlenszerű elemek - az átlóban 1 - esek vannak (egységmátrixok 4

>> ones(4,2) 1 1 1 1 1 1 1 1 >> eye(3,2) 1 0 0 1 0 0 >> eye(3,3) 1 0 0 0 1 0 0 0 1 >> d=10*rand(3,3) 8.3850 7.0247 6.9354 5.6807 5.4657 6.2358 3.7015 4.4587 7.9548 >> fix(d) egész rész 8 7 6 5 5 6 3 4 7 o mátrixok beolvasása külső szövegállományokból: pl. Ha létrehozunk egy mátrixot egy a.txt nevű szövegállományban: elemek közt szóköz, minden sor külön sorban, akkor a >> Load a.txt parancs létrehozza az a változót, ami tartalmazza a mátrixot. Hivatkozások a mátrix elemeire, soraira, oszlopaira illetve blokkjaira (az indexelés 1 - től kezdődik): A(m,n) m. sor n. eleme A(m,:) m. sor A(:,n) n. oszlop A(i,j:n) az i-ik sor (n-j+1) eleme: a j. oszloptól az n. oszlopig A(m:i,j:n) (i - m + 1) x (n - j + 1) - es blokk: az m - i. sor j - n. elemeit adja meg A([m,i],[n,j]) 2x2 - es mátrix az A mátrix m. és i. sorában levő n. és j. elem. 5

>> A=[1 2 3 4 5 ; 6 7 8 9 10 ; 11 12 13 14 15 ; 16 17 18 19 20] A = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 >> A(2,5) 10 >> A(3,:) 11 12 13 14 15 >> A(:,5) 5 10 15 20 >> A(2:3,2:4) 7 8 9 12 13 14 MÁTRIXMŰVELETEK Lehetnek : 1. tipikus mátrixalgebrai műveletek (mátrixszorzás, inverz, transzponált) 2. elemenkénti műveletvégzés( összeadás, kivonás, szorzás, osztás: +,-,.*,./) >> A=[1 2;3 4]; >> B=[5 6;7 8]; >> C=A*B C = 19 22 43 50 Elemenként pedig a műveleti jel elé pontot teszünk: >> D=A.*B D = 5 12 21 32 Függvények is alkalmazhatók mátrixra, vektorra: >> X=0:pi/2:2*pi X = 0 1.5708 3.1416 4.7124 6.2832 >> Y=sin(X) 6

Y = 0 1.0000 0.0000-1.0000-0.0000 megj.: Ez a függvényábrázolásnál is fontos! Az értelmezési tartományként adott intervallumot egyenletesen felosztjuk, majd az így kapott vektor minden elemére alkalmazzuk a függvényt. >>Plot(X,Y) Bővebben a 9.Grafika fejezetben. Dürrer mágikus mátrixa: >> A = [16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1] A = 16 3 2 13 5 10 11 8 9 6 7 12 4 15 14 1 oszlopok elemeinek összege: >> sum(a) 34 34 34 34 sorok elemeinek összege: ( transzponáljuk az A-t és kiszámítjuk az oszlopok összegét) >> sum(a ) 34 34 34 34 >> diag(a); - a mátrix átlója >> sum(diag(a)) 34 a másik átló összegének kiszámításához megfordítjuk a mátrixot a fliplr paranccsal: >> sum(diag(fliplr(a))) 34 egy oszlop elemeinek az összege (pl. 4. oszlop): >> sum(a(1:4,4)) 34 7

konkatenálás: >> B = [A A+32; A+48 A+16] B = 16 3 2 13 48 35 34 45 5 10 11 8 37 42 43 40 9 6 7 12 41 38 39 44 4 15 14 1 36 47 46 33 64 51 50 61 32 19 18 29 53 58 59 56 21 26 27 24 57 54 55 60 25 22 23 28 52 63 62 49 20 31 30 17 Sorok, oszlopok törlése: >>X = A; >>X(:,2) = [ ] X = 16 2 13 5 11 8 9 7 12 4 14 1 5. Egyenletrendszerek megoldása 3x1 11x2 + 5 = 0 x1 + 4x2 6 = 0 AX=B A=[3 11; 1 4] B=[-5;6] X=inv(A)*B vagy x=a\b 6. Polinomok P=[2 3 1 4] 2x 3 +3x 2 +x+4 polinom értékének számítása x=t-ben: polyval(p,t) deriválás: polyder(p) polinomok szorzása: conv(p,q) 8

7. Matematikai függvények: Trigonometriai függvények sin(x) cos(x) cos(2+3i) = -4.1896 9.1092i tan(x) asin(x) acos(x) acos(0.5) = 1.0472 atan(x) acos(3) = 0 + 1.7627i atan2(y, x) sinh(x) See the MATLAB help for more details!!! cosh(x) tanh(x) asinh(x) acosh(x) atanh(x) Más matematikai függvények Megjegyzés 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) 1 if x > 0; -1 if x < 0. exp(x) e x log(x) e alapú logaritmus log10(x) 10-es alapú logaritmus sort(x) Növekvő sorrendbe rendezi az x vektor elemeit. Ha x mátrix, akkor a rendezés oszloponként történik. sum(x) Összeadja az x vektor elemeit. Ha x mátrix akkor összeadja oszlopait ( eredmény egy vektor) max(x) Megkeresi az x vektor legnagyobb elemét. Ha x mátrix, az eredmény egy sorvektor: az oszlopok maximum értékeivel min(x) Minimum érték vektorban és mátrix oszlopaiban 9

8. 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. 8.1.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 majd a 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. Lementjük egy s1.m file-ba a következő parancsokat: A=[1 2 3]; B=[1 0 1]; A.*B majd s1 et beírva a Matlab parancsablakban végrehajtódik a 3 utasítás: >>s1 ans= 1 0 3 8.2. programvezérlő utasítások 8.2.1. IF If logikai feltétel Utasítások Elseif logikai feltétel Utasítások Else Utasítások End a=input('a='); b=input('b='); if a>b disp('a nagyobb mint b') elseif a==b disp('a egyenlo b') else disp('a kisebb mint b') 10

end megj. input beolvasás disp megjelenítés, kiírás 8.2.2. While while feltétel utasítás(ok) end pl. Legkisebb pozitív szám kiszámítása >> x=1; while x>0 x=x/2 end 8.2.3. For for változó=kezdőérték:növekmény:végérték utasítás(ok); end >> for i=1:2:9 disp(i) end 1 3 5 9 8.3. Függvények írása function [ki1,ki2, ]=fv_nev(be1,be2, ) ahol, a ki1,ki2, jelenti a visszatérítendő változókat ( a függvény értékét), míg be1,be2, a bemenő paramétereket Pl1. 11

Írjunk egy függvényt: f(x,y)=2 x - 3 y ln x Létrehozunk egy f1.m nevű állományt és beírjuk: Function z=f1(x,y) z=2*x-3*y*log(x) majd lementjük. Megj.: a z változóban lesz kiszámolva a függvény értéke f1 a függvény neve és ezt kell adni az állomány nevének is x,y a függvény bemenő paraméterei. Ha a parancsablakban beírjuk: >> t=f1(1,2) akkor azt kapjuk, hogy: t= 2.0000 Pl2. Írjunk egy függvényt a lineáris egyenletrendszerek megoldására: Létrehozunk egy er.m nevű állományt és beírjuk: function x=er(p) % lineáris egyenletrendszer megoldása % a parameter egy (m-1 x m)-es matrix, ahol % az utolsó oszlop a szabadtagokat tartalmazza. [m n]=size(p); A=p(1:m,1:n-1); B=(-1)*p(1:m,n); x=a\b; 3x1 11x2 + 5 = 0 ha megszeretnénk oldani a egyenletrendszert az er x1 + 4x2 6 = 0 függvénnyel, akkor a Matlab parancsablakban beírjuk: >> c=[3-11 5;1 4-6]; >> x=er(c) és azt kapjuk, hogy: x = 2 1 Ha a parancsablakban beírjuk: >> help er akkor a függvényben szereplő % utáni sorokat kapjuk: lineáris egyenletrendszer megoldása a parameter egy (m-1 x m)-es matrix, ahol az utolsó oszlop a szabadtagokat tartalmazza. 12

Pl3. Írjuk meg a következő függvényt: f t; x, x, x = 2x + 5x, 1 sint x x + 3x, x + x ( ) ( ( ) ) 1 2 3 1 3 1 2 3 1 2 Létrehozunk egy f2.m nevű állományt és beírjuk: function z = f2(t, x); z(1) = - 2*x(1) + 5*x(3); z(2) = - (1-sin(t))*x(1) x(2)+ 3*x(3); z(3) = - x(1) + 2*x(3); z = [ z(1), z(2), z(3)]; A Matlab parancsablakban beírhatjuk: >> h=f2(0, [1, 2, 0]) h= -2.0000-3.0000-1.0000 8.4. Beolvasás - kiiratás input: beolvasás használat: változó=input(szöveg) Pl: >> x=input( x= ) megjelenik: x= és megadhatjuk az x értékét. disp: kiíratás disp(x) kiírja az x értékét anélkül, hogy kiírná az x= - t >> x=6; >> x megjelenik: x= 6 >> disp(x) megjelenik: 6 3 13

9. Grafika 9.1. 2D s grafikonok A plot beépített utasítás x-y grafikonok készítésére szolgál; ha x és y azonos hosszúságú vektorok, akkor a plot(x,y) felrajzolja a görbét amit a megfelelő x(i),y(i)) koordinátájú pontok összekötésével kapunk. A szinuszfüggvény grafikonja a [4,4] intervallumon: >>x=-4:0.01:4; y=sin(x); plot(x,y) Ekkor az x vektor az értelmezési tartomány felosztását tartalmazza 0.01 lépésközzel, az y pedig a megfelelő függvényértékeket. A grid utasítással lehet ki/be kapcsolni a grafikon segédvonalait (rács). Egy grafikonon több függvény is ábrázolható: >>x=-2:0.01:2; y=sin(x);t=cos(x); h=exp(x) ; plot(x,y,x,t,x,h); 8 7 6 5 4 3 2 1 0-1 -2-1.5-1 -0.5 0 0.5 1 1.5 2 Vonalstílus megadása: >>plot(x,y,'-',x,t,'- -',x,h,':') y folytonos, t szaggatott, h pontozott 8 7 6 5 4 3 2 1 0-1 -2-1.5-1 -0.5 0 0.5 1 1.5 2 A stílus paraméter egy karakterlánc a következő felépítéssel: vonalstílus-jel-szín 14

A vonalstílust láttuk a fenti példában, a jel lehet: x, *, o stb. ezek a jelek jelennek meg a pontokban, a szín pedig a megfelelő színek angol kezdőbetűje: r piros, y sárga, stb.» x=-2:0.2:2; y=sin(x); plot(x,y,'-or') 1 0.8 0.6 0.4 0.2 0-0.2-0.4-0.6-0.8-1 -2-1.5-1 -0.5 0 0.5 1 1.5 2 Ha pl. a vonalat nem akarjuk megrajzolni, csak piros kereszteket, akkor kihagyjuk a vonalstílust:» plot(x,y,'r+') Ha piros vonallal és fekete pontokkal szeretnénk kirajzoltatni:» plot(x,y,'-r',x,y,'ok') megj.: kétszer rajzoljuk ki: először piros folytonos vonallal, majd fekete pontokkal, vonal nélkül. A fekete szín jele a k. ( mert a b a kék: blue) A hold on parancs hatására megmarad a grafikon és a következő plot utasítások rajza is felkerül rá. A hold off-al lehet kikapcsolni. Mátrixok kirajzolása: a plot(m) utasítás az m mátrix oszlopait ábrázolja a sorszám függvényében:» m=[1 0 3; 10 5 6; 4 8 2;10 3 8];» plot(m) 15

10 9 8 7 6 5 4 3 2 1 0 1 1.5 2 2.5 3 3.5 4 9.2. 3D s grafikonok Ha x,y,z három egyforma hosszú vektor, akkor a plot3(x,y,z) egy 3D-s ábrát készít.» t = 0:pi/50:10*pi;» plot3(sin(t),cos(t),t)» grid on 40 30 20 10 0 1 0.5 0-0.5-1 -1-0.5 0 0.5 1 3D-s ábrákat lehet készíteni pl. 2 változós függvények ábrázolásával: Ábrázoljuk a Z=sqrt(X.^2 + Y.^2) függvényt: A meshgrid utasítással létrehozunk egy 2 dimenziós hálót: azokat az x,y pontokat amelyben kiszámítjuk és ábrázoljuk a Z-t. Az ábrázolást a mesh(x,y,z) paranccsal végezzük el. Használata: [X,Y]=meshgrid[x,y]. Ha a háló négyzetes, akkor írhatjuk: [X,Y]=meshgrid[x] ami megfelel a [X,Y]=meshgrid[x,x]-nek» [X,Y] = meshgrid( 8:.5:8); 16

Z = sqrt(x.^2 + Y.^2); mesh(x,y,z)»r=z+eps; R=sin(R)./R; mesh(x,y,r) a surf(x,y,r) felületi színezést ad a grafikonnak:»surf(x,y,z) 17

a shading interp utasítással finomabb színezést (interpolálással) lehet adni a felületnek: >> shading interp A Matlab további grafikus lehetőségeiről a HELP-ben illetve a http://www-ccs.ucsd.edu/matlab/fulldocset.html címen megtalálható online kézikönyvekben találunk leírást. Using MATLAB Graphics: http://www-ccs.ucsd.edu/matlab/pdf_doc/matlab/graphg.pdf 10. Állománykezelés állomány nyitása: fopen használata: állományazonosító=fopen(állomány neve, nyitási mód) nyitási módok: 'r' read - olvasás 'w' write (create if necessary) írás (létrehozás ha szükséges) 18

'a' append (create if necessary) bővítés (létrehozás ha szükséges) 'r+' read and write (do not create) olvasás és írás (nem létrehozás) Az állományok bináris módban nyílnak meg. Ha szövegállományként szeretnénk megnyitni a nyitási mód mellé oda kell tenni a 't' t. >> fid=fopen( c:\konyvtar\a.txt, at ) megnyitja a C: lemez konyvtar nevű könyvtárában levő a.txt szövegállományt bővítésre. Ha a.txt nem létezik létrehozza. Állomány zárása: fclose(állományazonosító) formatált olvasás állományból: fscanf használata: változó=fscanf(állományazonosító, formátum, méret) A formátum a C nyelvben használatos formátum specifikációk: %s karakterlánc %d decimális egész szám %f valós szám A méret paraméter opcionális: n max. n elemszámú vektort olvas be inf max. az állomány végéig olvas [m,n] max. egy mxn-es mátrixot olvas be. Létrehozunk egy c:\a.txt szövegállományt a következő tartalommal: 23.56 1.65 3.45 8.953 5 7 6 9 12.43433 5.8766 Az állomány tartalmát különbözőféleképpen lehet beolvasni: Először meg kell nyitni: >>fid=fopen( c:\a.txt, rt ); Beolvasás egy oszlopvektorba >>x=fscanf(fid, %f ) x= 23.5600 1.6500 3.4500 8.9530 5.0000 7.0000 6.0000 9.0000 12.4343 5.8766 3 szám beolvasása ( egy 3 elemű oszlopvektorba): 19

>>x=fscanf(fid, %f,3) x= 23.5600 1.6500 3.4500 egy 2x2 - es mátrix beolvasása: >>x=fscanf(fid,'%f',[2,2]) x = 23.5600 3.4500 1.6500 8.9530 az egész állomány beolvasása egy 2xn-es mátrixba ( n változó szám = a sorok száma) >>x=fscanf(fid,'%f',[2,inf]) x = 23.5600 3.4500 5.0000 6.0000 12.4343 1.6500 8.9530 7.0000 9.0000 5.8766 az egész állomány beolvasása egy 3xn-es mátrixba >>x=fscanf(fid,'%f',[3,inf]) x = 23.5600 8.9530 6.0000 5.8766 1.6500 5.0000 9.0000 0 3.4500 7.0000 12.4343 0 formázott írás állományba: fprintf használat: fprintf(fid, formátum, változó) fid állományazonosító, ha hiányzik, akkor a kiírás a képernyőre történik formátum - a C nyelvben használatos formátum specifikációk: változó a változó amit az állományba vagy a képernyőre íratunk. A formátum tartalmazhat speciális karaktereket: pl. \n jelentése: új sor. Ha beírjuk: x = 0:.1:1; y = [x; exp(x)]; fid = fopen('c:\b.txt','w'); fprintf(fid,'%6.2f %12.8f\n',y); fclose(fid) akkor a b.txt állományban a következő sorok jönnek létre: 0.00 1.00000000 0.10 1.10517092... 1.00 2.71828183 20

Ha beírjuk: B = [8.8 7.7; 8800 7700] fprintf('x = %6.2f meter vagy %8.3f mm\n',9.9,9900,b) megjelenik: X = 9.90 meter vagy 9900.000 mm X = 8.80 meter vagy 8800.000 mm X = 7.70 meter vagy 7700.000 mm különböző elválasztókat használó állományból való olvasás: dlmread használat: - m=dlmread(állománynév,elválasztó) pl. m=dlmread( c:\a.txt, * ) ha az a.txt állományban a számok a * karakterrel vannak elválasztva egymástól. ( az EXCEL állományokat lehet lementeni pl. CSV formátumba, ahol az elválasztó a vessző. Egy ilyen file beolvasásához megadjuk a nevét és a, elválasztót. ) - m=dlmread(állománynév,elválasztó, sor, oszlop) a sor és oszlop paraméterek megadják, hogy a beolvasás honnan kezdődjön (az indexelés zérótól indul). - m=dlmread(állománynév,elválasztó, sor, oszlop,tartomány) ahol a tartomány formája: [R1 C1 R2 C2], az R1 C1 jelenti a bal felső sarkat, míg az R2 C2 a jobb alsó sarkat. A tartományt meg lehet adni az EXCEL-ben használt jelölésekkel is: A3..B7 Beírjuk EXCEL-be a következő adatokat és lementjük az a.csv állományba: Matlabban:» dlmread('a.csv',',') 1 2 3 4 5 6 7 8 9 10 11 12» dlmread('a.csv',',',1,1) a második sor, második oszloptól olvassa be: 5 6 8 9 11 12 21

» dlmread('b.csv',',',2,1,'b3..c4') a harmadik sor második oszlopától (2,1) kezdve beolvassa a B3..C4 tartományt. Ebben az esetben a (2,1) megegyezik a B3-al: 8 9 11 12 Ha a kezdő sor és oszlop nem egyezik meg a tartomány kezdetével, akkor 0-kkal tölti fel az üres részt:» dlmread('b.csv',',',0,0,'b3..c4') 0 0 0 0 0 0 0 8 9 0 11 12 megj. a fenti utasítás megegyezik a» dlmread('b.csv',',',0,0,[2 1 3 2]) utasítással írás állományba elválasztókkal: dlmwrite használat: dlmwrite(állomány,mátrix,elválasztó)» dlmwrite( c.csv,m,, ); 11. Az eval és feval utasítások Ha t egy karakterlánc típusú változó, akkor az eval(t) egyszerűen végrehajtja a t-ben leírt utasítást. >>t = A+B ; >>A=1 ; >>B=2 ; >>eval(t) 3 Pl2. Hozzunk létre 12 darab egységmátrixot : M1 legyen egy 1x1 es M12 egy 12x12-es egységmátrix. >>for n=1:12 eval(strcat( M,num2str(n), =eye(n) )) end megj.: a strcat függvény összerakja (konkatenálja) a karakterlánc paramétereit egy karakterláncba. a num2str függvény az n számot karakterlánccá alakítja 22

A feval egy karakterláncban megadott függvényt értékel ki. Használata: feval(függvény, paraméterek). Feval( sin,pi/2) megfelel a sin(pi/2)-nek Létrehozunk egy plotf függvényt függvények ábrázolására: function plotf(f,x) y=feval(f,x); plot(x,y) és segítségével 3 függvényt ábrázolunk: >>x=0:.1:10; >>plotf('sin',x), plotf('cos',x), plotf('exp',x) 12. Egyenletek és egyenletrendszerek megoldása Egyenletek megoldása az Fzero paranccsal lehetséges: Ha keressük az f(x)=2sin(x)-1 függvény gyökét 0.5 közelében (azaz a keresést 0.5-ből indítjuk), akkor előbb le kell írnunk az f függvényt m- állományként: (f.m) function y=f1(x) y=2.*sin(x)-1; majd az Fzero parancs segítségével kapjuk meg a megoldást: >>fzero('f1',0.5) Egy egyenletrendszer megoldása hasonlóképpen történhet az Fsolve paranccsal : Oldjuk meg a köv. egyenletrendszert : 2 sin( x) + y + log( z) = 7 y 3 3x + 2 z = 1 x + y + z = 5 Létrehozzuk a függvény-állományt, melybe 0-ra rendezve írjuk az egyenleteket: function u=f2(w) x=w(1); y=w(2); z=w(3); u=zeros(1,3); u(1)=sin(x)+y^2+log(z)-7;u(2)=3*x+2^y-z^3+1;u(3)=x+y+z-5; Majd az [1 1 1] pont közelében levő megoldást így kapjuk meg: >>fsolve('f2',[1 1 1]) 23