5. Előadás. Matlab függvények, Salamon Júlia. Előadás I. éves mérnök hallgatók számára



Hasonló dokumentumok
A táblázatkezelő felépítése

Programozás I gyakorlat

MATLAB. 4. gyakorlat. Lineáris egyenletrendszerek, leképezések

A C programozási nyelv VI. Parancssori argumentumok File kezelés

IDE64 dokumentáció. A merevlemez előkészítése az első használatra. 1. Előkészítés. 2. Csatlakoztatás. 3. Segédprogram másolás

E-ADÓ RENSZER HASZNÁLATI ÚTMUTATÓ

Belépési útmutató a MIAG weboldalra

EPER E-KATA integráció

Érettségi feladatok Algoritmusok egydimenziós tömbökkel (vektorokkal) 1/6. Alapműveletek

Minta programterv a 1. házi feladathoz

Adatok ábrázolása, adattípusok. Összefoglalás

DLookup függvény 1. (5)

Párhuzamos programozás

Jelek tanulmányozása

Korszerű geodéziai adatfeldolgozás Kulcsár Attila

AWP TELEPÍTÉSE- WINDOWS7 64 OPERÁCIÓS RENDSZEREN

Shared IMAP beállítása magyar nyelvű webmailes felületen

Az első lépések. A Start menüből válasszuk ki a Minden program parancsot. A megjelenő listában kattintsunk rá az indítandó program nevére.

Vegyes tételek könyvelése felhasználói dokumentum Lezárva:

ÚTMUTATÓ A KONTROLL ADATSZOLGÁLTATÁS ELKÉSZÍTÉSÉHEZ (2012-TŐL)

Linux fájlrendszerek.

Üresként jelölt CRF visszaállítása

Beállítások CLASSBOOK-óratervező. Első belépés

Analízis elo adások. Vajda István október 3. Neumann János Informatika Kar Óbudai Egyetem. Vajda István (Óbudai Egyetem)

Vodafone ReadyPay. Használati útmutató

Ablakok használata. 1. ábra Programablak

HENYIR felhasználói dokumentáció

Digitális technika (VIMIAA01) Laboratórium 1

Számítógépes vírusok

HWDEV-02A GSM TERMOSZTÁT

ADATBÁZIS-KEZELÉS. Funkcionális függés, normál formák

1. Metrótörténet. A feladat folytatása a következő oldalon található. Informatika emelt szint. m2_blaha.jpg, m3_nagyvaradter.jpg és m4_furopajzs.jpg.

Mágneses szuszceptibilitás vizsgálata

Tanúsítvány és hozzá tartozó kulcsok feltöltése Oberthur kártyára és Oberthur SIM termékre

Áramlástechnikai gépek soros és párhuzamos üzeme, grafikus és numerikus megoldási módszerek (13. fejezet)

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

QGIS tanfolyam (ver.2.0)

Lineáris algebra gyakorlat

Szakképzés - Meghatalmazás használata

Prop-Tech. Vázmérő. Telepítési és eltávolítási útmutató

Felhasználói kézikönyv ACR Rádiós ébresztőóra (Olvassa el használat előtt) Letölthető PDF formátum:

Az új modulrendszer tapasztalatai

Dr. Schuster György február 21. Real-time operációs rendszerek RTOS

Vodafone GPRS Kapcsolat létrehozása Win2000 alatt a Connect Me használata nélkül

Az aktiválódásoknak azonban itt még nincs vége, ugyanis az aktiválódások 30 évenként ismétlődnek!

Fordítóprogramok Készítette: Nagy Krisztián

CAD-CAM

ingyenes tanulmány GOOGLE INSIGHTS FOR SEARCH

KITÖLTÉSI ÚTMUTATÓ. D Támogatási kérelem és első évre vonatkozó Kifizetési kérelem - Főlap Kötelezően benyújtandó

FTP-kapcsolat létrehozása FlashFXP alatt

SÜTIK TÖRLÉSE. Készült: Módosítva:

A Felhasználónév és Jelszó mezőkbe írjuk be az adatainkat, majd kattintsunk a Bejelentkezés gombra, vagy üssük le az Enter billentyűt.

A döntő feladatai. valós számok!

Fókuszban a formahibák. Konzultációs nap Minőségfejlesztési Iroda szeptember 18. Fekete Krisztina

Készítsen négy oldalas prezentációt egy vállalat bemutatására!

MATEMATIKA HETI 3 ÓRA

Magyar. Biztonsági információk. Magyar

E-számla igénylése három lépéssel!

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

MÁTRIXOK SAJÁTÉRTÉKEINEK ÉS SAJÁTVEKTORAINAK KISZÁMÍTÁSA. 1. Definíció alkalmazásával megoldható feladatok

INFORMATIKAI ALAPISMERETEK

Számrendszerek közötti átváltások

SJ5000+ MENÜBEÁLLÍTÁSOK. E l e c t r o p o i n t K f t., B u d a p e s t, M e g y e r i ú t F s z. 1. Oldal 1

MATEMATIKA ÉRETTSÉGI TÍPUSFELADATOK MEGOLDÁSAI KÖZÉPSZINT Trigonometria

KOVÁCS BÉLA, MATEMATIKA I.

Variációk egy témára - táblázatkezelő feladatok megoldása többféleképpen

MATEMATIKA ÍRÁSBELI VIZSGA május 3.

KOVÁCS BÉLA, MATEMATIKA I.

1. forduló. MEGOLDÁSOK Pontszerző Matematikaverseny 2015/2016-os tanév

Kerékpárlabda kvalifikációs szabályzat

Linux Mint 8 telepítése

Amit a Hőátbocsátási tényezőről tudni kell

Nagyméretű dokumentumok hivatkozásai

BOLYAI MATEMATIKA CSAPATVERSENY FŐVÁROSI DÖNTŐ SZÓBELI (2005. NOVEMBER 26.) 5. osztály

Segítünk online ügyféllé válni Kisokos

Fábián Zoltán Hálózatok elmélet

Útmutató a vízumkérő lap kitöltéséhez

My Hipernet Home üzembehelyezési útmutató

SAP JAM. Felhasználói segédlet

Egyre nagyobb profitot generálnak a mobiltelefonnal végzett vásárlások, és egyre többet hezitálunk vásárlás előtt

Tartalomjegyzék. Tartalom 1/16

MATEMATIKA ÍRÁSBELI VIZSGA május 8.

Töltse ki értelemszerűen a vevő nevét, irányítószámát, település, utca házszám mezőket, valamint a partner adószáma mezőket.

Tartalom. 1. A dokumentum célja... 2

MAGYAR KÜZDELMEK HARMADIK GYAKORLAT ELINDULÁS NYERS SZÖVEG RENDBETÉTELE (ISMÉTLÉS) ÜZLETI INFORMATIKAI ESZKÖZÖK Kiadványszerkesztés

Bár a digitális technológia nagyon sokat fejlődött, van még olyan dolog, amit a digitális fényképezőgépek nem tudnak: minden körülmények között

xdsl Optika Kábelnet Mért érték (2012. II. félév): SL24: 79,12% SL72: 98,78%

Tanúsítvány és hozzá tartozó kulcsok feltöltése Gemalto.NET kártyára

Windows XP: Windows 7 32bit. Windows 7 64bit. Windows bit. Windows 8/8.1 64bit. Ajánlott linkek. OpenVPN beüzemelése Windows rendszereken

Csomagolási segédlet

OmniTouch 8400 Instant Communications Suite 4980 Softphone

A TŰZVÉDELMI TERVEZÉS FOLYAMATA. Dr. Takács Lajos Gábor okl. építészmérnök BME Építészmérnöki Kar Épületszerkezettani Tanszék

Felvételi előkészítő tájékoztató 2012.

Árverés kezelés ECP WEBSHOP BEÉPÜLŐ MODUL ÁRVERÉS KEZELŐ KIEGÉSZÍTÉS. v ECP WEBSHOP V1.8 WEBÁRUHÁZ MODULHOZ

Előre is köszönjük munkádat és izgatottan várjuk válaszaidat! A Helleresek

Az informatika oktatás téveszméi

Laborgyakorlat Windows 7 upgrade-je, felhasználói adatok költöztetése

Felhasználói Kézikönyv Kisbanki NetBOSS - IVR

Prolog 1. Készítette: Szabó Éva

AZ EURÓPAI KÖZÖSSÉGEK BIZOTTSÁGA. Javaslat: AZ EURÓPAI PARLAMENT ÉS A TANÁCS IRÁNYELVE

Átírás:

5. Előadás Matlab függvények, adatfeldolgozás, állományok kezelése. Salamon Júlia Előadás I. éves mérnök hallgatók számára

Matlab függvények A Matlab rendszer függvényekből épül fel. A Matlab interpreter a függvénynév megjelenésekor elkezdi keresni a megadott nevű fájlt a háttértáron, ha nem találja, akkor hibát jelez. A keresés sorrendje a következő: keresi a változók között; keresi a rendszerbe beépített függvények között; keresi aktuális könyvtárban m kiterjesztésű állományként; végig nézi a Matlab installációjában megadott útvonallal elérhető könyvtárakat. A rendszerbe beépített függvények listáját nem lehet megnézni, viszont az m- fájlban tárolt függvények programlistája tanulmányozható és módosítható is. Ha olyan függvényt szeretnénk használni, amely a rendszerben nem áll rendelkezésünkre, akkor magunk is írhatunk Matlab függvényt és elhelyezhetjük az általunk kiválasztott, a Matlab rendszer által ismert könyvtárban mint egy m-fáljt. Ezután a rendszer sajátjaként fogja kezelni a függvényt, ezért vigyázni kell arra, hogy ne adjunk olyan függvénynevet, amely a rendszerben már van, mert ekkor bizonytalanná válhat a rendszer működése: a Matlab mindig azt a függvényt használja amit először talált meg. 2010.11.16. V. előadás 2

Új Matlab függvény megírásának módja: Definiálunk egy m kiterjesztésű fájlt, melynek a neve megegyezik azzal a névvel, amivel később az új függvényt a rendszerünkben használni szeretnénk. Ebben az m-fájlban megszerkesztjük azt a programot, mely a függvényünktől megkívánt funkciókat teljesíti. Afüggvényt megadó program első sorában kell megadjuk, hogy a szóban forgó fájl egy függvény, továbbá itt határozzuk meg a függvény nevét, valamint a bemenő és kijövő paramétereit. function [ki1,ki2, ]=fgv_nev(be1,be2, ) A függvény által elvégzett feladatokat és a használat módját célszerű a függvény listájában megjegyzések formájában rögzíteni. Erre szolgálnak a % karakterrel kezdődő sorok. Ezeket a help fgv_nev parancs hatására jeleníti meg a Matlab; a magyarázó szöveg első sorát érdemes jól megfogalmazni, mert a lookfor text utasítás ott keresi a text karakterláncot. Függvénytcsak meghívni lehet futtatni nem: >>[a,b, ]=fgv_nev(4, alma, ) 2010.11.16. V. előadás 3

Példaprogramok 1. Írj függvényt, amely kiszámolja a f(x,y)=(x+1,y 2 +2x+y-1) matematikai függvény értékét. function z=fgv(x,y) % f(x,y)=(x+1,yy+2x+y-1) függvény %értékét adja meg z1=x+1; z2=y*y+2*x+y-1; z=[z1 z2]; >>a=fgv(2,8) 2. Írj függvényt, amely egy karakterlánc minden harmadik karakterét megduplázza. function z=duplaz(s) % egy karakterlánc minden harmadik %karakterét megduplázza z=''; for i=1:length(s) 1l th() z=[z s(i)]; if mod(i,3)==0 z=[z s(i)]; end end >>z=duplaz( almafa ) 2010.11.16. V. előadás 4

Afüggvények paraméterei Függvények esetében megkülönböztetjük a függvényhívás paramétereinek számát és a függvény által visszaadott paraméterek számát. A függvényhívás paramétereinek számát a Matlab rendszerben a nargin változó adja meg. A függvény által visszaadott értékek számát a nargout változó tartalmazza. Egy függvényt kevesebb paraméterrel is meglehet hívni, mint a hívó paramétereinek a száma, és a felhasználni kívánt értékek száma is kevesebb lehet, mint amennyi változó értéket a függvényünk visszaad, de a paraméterek csak a paraméter lista végérőlhiányozhatnak. A Matlab hibát csak akkor jelez, ha valahol több paramétert használunk, mint amit a függvény írásánál megadtunk. 2010.11.16. V. előadás 5

Példaprogramok 1. Írj függvényt amely megadja a bemenő és kijövő paraméterek számát. function [ki1 ki2]=argszam(be1,be2,be3), if nargin<1 ki1=0; elseif nargin==1 ki1=1; elseif nargin==2 ki1=2; else ki1=3; end if nargout<1 ki2=0; elseif nargout==1 ki2=1; else ki2=2; end >> [a b]=argszam(1, 3) a = 2 b = 2 2. Írj függvényt amelynek ha egy bemenő paramétere van, kiírja a szám gyökét, ha kettő összeadja a két szám közötti számokat, ha három kiírja az átlagukat. function ki=muvelet(be1,be2,be3) if nargin==1 ki=sqrt(be1); elseif nargin==2 ki=sum(be1:be2); elseif nargin==3 ki=(be1+be2+be3)/3; else disp('nem adtal meg parametert!') end >> a=muvelet(6) a = 2.4495 >> a=muvelet(6,9) a = 30 >> a=muvelet(6,9,1) a = 5.3333 >> muvelet Nem adtal meg parametert! 2010.11.16. V. előadás 6

M-fájlok futását vezérlő utasítások pause Felfüggeszti az m-fájl futását. A program futása bármilyen billentyű lenyomása esetén folytatódik. pause(n) A program végrehajtását n másodpercig felfüggeszti. pause on/off break Beállítható, hogy a pause parancsokat a rendszer figyelembe vegye vagy se. A for vagy while ciklusok futását megszakítja. return Egy m-fájl futását át megszakítja. error(szöveg) Az m-fájl végrehajtása befejeződik és a hibaüzenet a képernyőn kiírásra kerül. global lbl Globális változók definiálására iáláá szolgál. Hatását á aclearl global lbl utasítással szüntethetjük meg. keyboard Meghívja a billentyűzetet, mintha az egy végrehajtható fájl lenne. A program végrehajtása folytatódik, amint a return utasítást begépeltük. 2010.11.16. V. előadás 7

Eval és feval utasítások A Matlab megengedi, hogy egy függvény paramétere függvénynév legyen. Mivel a függvények neve szöveges változó, szükségünk lesz arra, hogy a meghívott függvény belsejében a függvény nevét vissza tudjuk konvertálni az aktuálisan megnevezett függvényt meghívó végrehajtó utasítássá. Ezt a célt szolgálják az eval és feval utasítások. Az eval utasítás arra szolgál, hogy paraméterrel, vagy paraméterekkel együtt szövegesen megadott függvény kiértékelését elvégezzük a megadott paraméter(ek) értékére. >> x=7; >> valt='sin(x)'; >> eval(valt) ans = 0.6570 A feval utasítás az eval utasításhoz hasonló funkciót tölt be. A feval utasítás használatakor csak a függvény nevét kll kell megadni diszövegesen, és a függvény paramétereinek értékét az feval utasításban kell felsorolni a függvény neve után. >> valt='sin' >> feval(valt,7) ans = 0.6570 2010.11.16. V. előadás 8

Példaprogram function y=tablazat1(ff,a,b,n) a b function y=tablazat2(ff,a,b,n) a b % az f fuggveny ertekeit [a,b] intervalum n pontjaban adja meg % az eredmeny az y=[x f(x)] tablazatban jelenik meg x=linspace(a,b,n); z=eval(ff); y=[x;z]; % az f fuggveny ertekeit [a,b] intervalum n pontjaban adja meg % az eredmeny az y=[x f(x)] tablazatban jelenik meg x=linspace(a,b,n); z=feval(ff,x); y=[x;z]; >> tablazat1('sin(x)',0,1,5) >> tablazat2('sin',0,1,5) ans = ans = 0 0.2500 0.5000 0.7500 1.0000 0 0.2500 0.5000 0.7500 1.0000 0 0.2474 0.4794 0.6816 0.8415 0 0.2474 0.4794 0.6816 0.8415 2010.11.16. V. előadás 9

Állományok kezelése Gyakran kívánatos, hogy a számításaink eredményeit, bizonyos helyre elrakhassuk, például annak érdekében, hogy abból további számítások kiindulhassanak. Ha csak néhány változó tartalmát kívánjuk megőrizni, illetve felhasználni, akkor erre a load és save utasításokat alkalmazzuk. Sokszor előfordul, hogy egy program működéséhez szükséges adatokat egy másik program korábban már előállította, vagy a mi programunk által kapott valamilyen eredményt, egy másik program használ a későbbiek során. Ennek a kapcsán a dlmread és a dlmwrite utasításokat fogjuk tanulmányozni. Ezen utasítások használatával indirekten az adatokat beolvashatjuk Exel állományból, illetve kimenthetjük. Ezeken kívül a Matlab még számos állomány kezeléssel kapcsolatos utasítást felkínál. Ezek használata sok hasonlóságot mutat a C nyelv megoldásaival, több részletben teljesen azonos. (fopen, fread, fwrite, fprintf, fscanf, stb) További részletekért lásd: Stoyan Gisbert, Matlab című könyvének 266-280 oldalait. 2010.11.16. V. előadás 10

Save utasítások save fnév v stb save fnév v stb -ascii save fnév v stb ascii -double A v, stb változókat menti aktuális értékükkel az fnév nevű fájlba. A mentés bináris. Ha nincs változólista, az összes változót menti. Itt a mentés egy acii fájlba, 8 decimális jeggyel történik. Mentés acsii fájlba, 16 decimális jeggyel. A save utasítás felülírja az esetleg már meglévő fájlt. Ha a meglévő tartalom törlése nélkül akarjuk folytatni, akkor írjunk append opciót. Ha a load vagy save utasítás önmagában áll, akkor a matlab.mat névre ment, vagy olvas. Kiterjesztés nélkül, vagy nem.mat kiterjesztésű fájl is lehet bináris, ekkor viszont mind a save, mind a load utasításban kötelezően a mat opciót is írni kell. Ha save fnev v1 v2 stb acsii utasításban v1, v2, stb azonos méretű tömbök, akkor a fájlban egyetlen tömbként tárolódnak, mégpedig [v1; v2; stb] konstrukcióval. Ha a méretek nem azonosak, akkor akésőbbi load fnév ascii hibát jelez. 2010.11.16. V. előadás 11

Load utasítások A mat kiterjesztésű fájl, az a fájlformátum, amelyet a Matlab alkalmaz adatok tárolásához. A mat-fájlok egyben annak legfontosabb eszközét jelentik, hogy adatokat vigyünk be a Matlab környezetbe, illetve írjunk ki C és Fortran programokkal való feldolgozás céljára. A mat-fájlok egy vagy több mátrixot tartalmaznak szekvenciálisan, folytonos bájtsorozatként. Minden mátrix egy rögzített hosszúságú fejléccel kezdődik, ami a mátrix tulajdonságait írja le. Közvetlenül utána következnek az aktuális adatok, amelyeknek hosszúsága a fejlécben megtalálható. Ez ismétlődik a fájlban tárolt összes mátrixra. load fnév v stb load név.kit load név v stb -ascii A v stb változókat betölti az fnév nevű (.mat kiterjesztésű) bináris fájlból. Ha nincs változólista, az összes változót betölti. Betölti a név.kit ascii fájlt. Ez egyetlen mátrixot tartalmazhat, t t és ez lesz a név nevűű változó aktuális értéke. A kiterjesztés nem hiányozhat, és nem lehet.mat kiterjesztés. Mint előbb, de itt az állomány névnél nincs megadva a kiterjesztés. 2010.11.16. V. előadás 12

Példaprogramok >> s='almafa'; >> A=rand(2) A = 0.8913 0.4565 0.7621 0.01850185 >> g=11; >> v=[1 3 2 5] >> save mind >> load mind >> save f.mat A s >> t=load('f.mat mat') t = s: 'almafa' A: [2x2 double] >> load f.mat >> b=[1 5-2 7]; >> k=[0 2-1 1]; >> save e.txt b k -ascii >> load e.txt >> e e = 1 5-2 7 0 2-1 1 >> save( 'e.txt','b', 'k', '-ascii', '-append') >> D=load( 'e.txt') D= 1 5-2 7 0 2-1 1 1 5-2 7 0 2-1 1 2010.11.16. V. előadás 13

Dlmread, dlmwrite utasítások Különböző elválasztókat használó állományból való olvasás a utasítással történik. Használat: dlmread m=dlmread( állománynév, elválasztó) m=dlmread( c:\a.txt, * ) beolvassa az a.txt állomány tartalmát ahol a számok * karakterrel vannak elválasztva egymástól. Az EXCEL állományokat le lehet menteni.txt kiterjesztésű állományokba, ahol az elválasztó a tabulátor. Egy ilyen fájl beolvasásánál az elválasztónak a '\t' adjuk. 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ó,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 Írás állományba elválasztókkal a dlmwrite utasítással történik. Használat: dlmwrite(állomány,mátrix,elválasztó) 2010.11.16. V. előadás 14

Példaprogram 1. Olvass be n darab karakterláncot, 2. Olvass be egy mátrixot egy amelyeket írj ki egy szöveges szöveges állományból (az állomány állományba. nevét kérd be), majd szorozd össze egy generált állománnyal. n=input('n='); sz=input('szoveg=','s') dlmwrite('a.txt',sz); txt' for i=1:n-1 sz=input('szoveg=','s') dlmwrite('a.txt',sz,'-append'); end Jobb klikk üres hely: New/Text Document (létrehozol egy.txt kiterjesztésű állományt) fn=input('kerem a fajl nevet=','s'); A=dlmread(fn,' d(f '')') [n m]=size(a); B=rand(m,2) szorzat=a*b 2010.11.16. V. előadás 15

Példaprogram Feladat Excel állományba, írjunk be adatokat. Mentsük le Text (tab delimited) formátumba. Majd olvassuk be azígyelőállított állomány adatait a Matlab programunkba. s.txt állomány tartalma >> A=dlmread('s.txt','\t') A = 1 2 5 6 7 8-2 12 3 6 0-1 >> A=dlmread('s.txt','\t', 1, 1) A = 7 8 12 3 0-1 >> A=dlmread('s.txt','\t', [1 0 2 1]) A = 6 7-2 12 >> A=dlmread('s.txt','\t', 'A2..B3') A = 6 7-2 12 2010.11.16. V. előadás 16

Feladat Egy mátrix tartalmát írjuk ki excel állományba. >> B=[1 2 4 6; 3 3-1 9; 4 1 1 2] B = 1 2 4 6 3 3-1 9 4 1 1 2 >> dlmwrite('k.txt',b,'\t') Ha az így kapott k.txt állományt megnyitjuk az Excel program segítségével kapjuk: 2010.11.16. V. előadás 17