MATLAB jelenleg 6.5-ös változat (R13)

Slides:



Advertisements
Hasonló előadás
Operációs Rendszerek I.
Advertisements

C++ programozási nyelv Gyakorlat hét
Adatbázisok SQL. TARTALOM Szijártó M.2 Témakörök  Az SQL tulajdonságai  A műveletek fajtái  Objektum-műveletek  Lekérdezések Tulajdonságok és műveletek.
Tömbök C#-ban.
Matematika és Tánc Felkészítő tanár: Komáromi Annamária
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Budapesti Műszaki és Gazdaságtudományi Egyetem Elektronikus Eszközök Tanszéke A programozás alapjai 1. (VIEEA100) 9. előadás.
Adatbányászati technikák (VISZM185)
MATLAB jelenleg 6.5-ös változat (R13)
JavaScript.
© Kozsik Tamás Beágyazott osztályok A blokkstrukturáltság támogatása –Eddig: egymásba ágyazható blokk utasítások Osztálydefiníciók is egymásba.
Programozási nyelvek.
Programozás alapjai.
Bevezetés a Java programozásba
7. előadás (2005. április 12.) Láncolt lista File kezelés 1.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 8. Gyakorlat Operator overloading II.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 5. Gyakorlat Öröklődés, virtuális függvények,
Programozás II. 3. Gyakorlat C++ alapok.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 6. Gyakorlat const, static, dinamikus 2D.
A CLIPS keretrendszer CLIPS "C" Language Integration Production System.
A Java programozási nyelvSoós Sándor 1/17 Java programozási nyelv 4. rész – Osztályok II. Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai.
A C++ programozási nyelvSoós Sándor 1/15 C++ programozási nyelv Gyakorlat hét Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet.
WEB Technológiák Dr. Pance Miklós – Kolcza Gábor Miskolci Egyetem.
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
Önleíró adatok: XML INFO ÉRA, Békéscsaba
Vizuális és web programozás II.
A JAVA TECHNOLÓGIA LÉNYEGE Többlépcsős fordítás A JAVA TECHNOLÓGIA LÉNYEGE Platformfüggetlenség.
ISZAM III.évf. részére Bunkóczi László
WEB Technológiák WEB-DB és XML ME Általános Informatikai Tsz. dr. Kovács László.
Ficsor Lajos Miskolci Egyetem Általános Informatikai Tanszék
Operációs rendszerek gyakorlat 4. Gyakorlat Vakulya Gergely.
PHP I. Alapok. Mi a PHP? PHP Hypertext Preprocessor Szkriptnyelv –Egyszerű, gyors fejlesztés –Nincs fordítás (csak értelmező) Alkalmazási lehetőségek:
Multimédiás programok készítése Macromedia Director rendszerben 2. előadás Készítette: Kosztyán Zsolt
C nyelv utasításai.
Összetett adattípusok
Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:
Hernyák Zoltán Programozási Nyelvek II.
Készítette: Lipp Marcell
A D programozási nyelv Angeli Dávid. Nagy vonalakban  C++  
Javascript Microsoft által készített kiegészítése Statikus típusosság Nagy projektek Windows 8 fejlesztésénél WinRT egy részét ebben írták Nyílt forráskódú,
Objektumorientált programozás
V 1.0 Szabó Zsolt, Óbudai Egyetem, Programozási Paradigmák és Technikák Programozási eszközök Interfészek Generikus.
Visual Basic 2008 Express Edition
Egyenesvonalú (lineáris) adatszerkezetek
1 Objektum orientált programozás Öröklődés: többszörös öröklődés, konstruktorok, destruktorok, overloading Nagy Szilvia.
Objektum orientált programozás
Funkciós blokkok A funkciós blokkok áttekintése Az alkalmazás előnyei.
HTML ÉS PHP (Nagyon) rövid áttekintés. ADATBÁZISRENDSZEREK MŰKÖDÉSI SÉMÁJA Felh. interakció DB Connector MySQL ? A gyakorlaton:
Fontos tudnivalók A MATLAB egy fajta objektummal dolgozik (Mátrix)
Objektumorientált alapjai ISZAM III.évf. részére Bunkóczi László.
CUDA C/C++ programozás CUDA C bevezetés A segédanyag készítése a TÁMOP A/ Nemzeti Kiválóság Program című kiemelt projekt keretében.
Ficsor Lajos A C++ programozási nyelv I. CPP1/ 1 Osztály és objektum fogalma.
A 2. géptermi beszámoló VBA anyagának összefoglalása
BIOLÓGUS INFORMATIKA 2008 – 2009 (1. évfolyam/1.félév) 6.
Informatikai gyakorlatok 11. évfolyam
TÁMOP /1-2F JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam Osztályok, objektumok definiálása és alkalmazása. Saját.
TÁMOP /1-2F JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam Utasítás és blokk. Elágazás típusai, alkalmazása Kovács.
Analogical and Neural Computing Laboratory, Hungarian Academy of Sciences, Budapest 1 MATLAB u Hatékony, interaktív, tudományos és műszaki számítások,
OpenCV CV = Computer Vision
Scilab alapok Mi a Scilab ? A Scilab telepítése
TÁMOP /1-2F Informatikai gyakorlatok 11. évfolyam Alapvető programozási tételek megvalósítása Czigléczky Gábor 2009.
Script nyelvek előadás
Script nyelvek előadás
Script nyelvek előadás
Technológiai folyamatok optimalizálása
Neumann János Informatikai Kar
A CLIPS keretrendszer
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Informatikai gyakorlatok 11. évfolyam
Függvénysablonok használata
Előadás másolata:

MATLAB www.mathworks.com jelenleg 6.5-ös változat (R13) ELTE: R12.1, Loviban elérhető műszaki számítások, algoritmus fejlesztés és tesztelés, szimulációk, tudományos munkák grafikai munkái, adatfeldolgozás

MATLAB történet MATrix LABoratory eredetileg nagy FORTRAN könyvtárak felé szánták egyszerűen használható felületnek klónjai elérhetők más platformokon is (pl. Linux: octave)

Mire jó és mire nem? kutatómunka során ritka a „klasszikus” programfejlesztés, legtöbbször gyorsan kell ellenőrizni egy ötletet, egy algoritmust, írni egy egyszerű szimulációt stb. Nagy programok írására nem ajánlott és nem is alkalmas (relatíve rossz újrafelhasználás, tervezhetőség stb.)

MATLAB elemei nyelv fejlesztői környezet (IDE) függvénykönyvtár editor, futtató környezet (parancssor), hibakövetés függvénykönyvtár grafikus rutinok toolboxok help

A MATLAB nyelve Fortran, C rokona alapvetően interpetált nyelv, bár lehet fordítani ( lassú) kommunikáció lehetősége más nyelvek felé egyszerű és gyorsan megtanulható, de nagy programok írására nem alkalmas (max. pár 100 soros programok)

A MATLAB nyelve mátrix-manipulációs nyelv a legfontosabb (és szinte egyedül használatos) adatstruktúra a mátrix nincsenek pointerek és összetett memória-kezelés, a hivatkozott változók automatikusan allokálódnak egy ún. workspace-ben (ezt közvetlenül elérhetjük a parancssorból) clear, who, whos, save, load, ans változó megjelenítés: beírni változó nevét (; nélkül) .mat file-ok

Adattípusok

Adatstruktúrák: mátrix megadás: A = [ 1 2 3; 4 5 6]; B = [ 3 4; 6 7]; C = [A B]; konstrukciós függvények: rand, randn, zeros, ones, magic, … elemre hivatkozás: A(2,3) (1-től N-ig !!!)

Mátrixok II. részmátrixra hivatkozás: törlés: A(5,:) = []; A(end, 5:end); törlés: A(5,:) = []; értékadással túlindexelni lehet (automatikusan bővül), de lekérdezni nem egy dimenziójában 1 széles mátrix: vektor (tömb), iránynak a tömbön operáló függvényeknél (pl. length) nincs jelentősége

Más adatstruktúrák szöveg: name = ‘szervusz’ (’ jelek között) lekérdezések: ischar, isblank,... manipulációk: strcat, lower,… keresések: strcmp, strmatch,… megjelenítés: sprintf, fprintf, err,… C-vel nem teljesen egyezik, pl. message = sprintf('The array is %dx%d.',2,3) több dimenziós mátrixok (pl. képek) A(:,:,5)

Más adatstruktúrák II. „cell” tömbök rekord mátrixok rekordjai, indexelés {} operátorral, pl. c = cell(2,3) c{1,2} = [4 5] (VAGY) c(1,2) = {[4 5]} (ekvivalens) címzés: c{1,2}(2) cell-en belül lehet másik cell (beágyazás) rekord S(3) = struct('nev',‘Kovacs Agi',... ‘pontszam',70); Egy cell-en belül is többféle rekord is lehet

Más adatstruktúrák III. Cell-en belüli struktúrák c_str = cell(1,2); c_str{1}.label = '12/2/94 - 12/5/94'; c_str{1}.obs = [47 52 55 48; 17 22 35 11]; c_str{2}.xdata = [-0.03 0.41 1.98 2.12 17.11]; c_str{2}.ydata = [-3 5 18 0 9]; c_str{2}.zdata = [0.6 0.8 1 2.2 3.4]; De persze nem kell 1x1-es rekordok legyenek, azaz pl. c_str{1}(2).label = ’12/6/95-’ működik

Operátorok minden változó egy 1x1-es mátrix speciális értékek: Inf, NaN, komplex számokat ismeri +,-,* mátrixokon is úgy működik, ahogy elvárjuk .-os változatok: n = (0:9)'; pows = [n n.^2 2.^n] figyelni: = értékadás, == logikai vizsgálat ami nem C: ~= nem egyenlő, | logikai vagy, & logikai és, ~ negálás

Mátrix-manipulációk statisztika: cov, mean, std, var, min, max, sum, … lineáris algebra: ‘, inv, det, eig, diag, trace, norm, rank, lu, svd, … tulajdonságok: isempty, size, … átrendezések: permute, reshape, flipud, fliplr, sub2ind, ind2sub, sort, find …

Programok scriptek: nincs I/O változó és direktben a workspace-ben dolgoznak függvények: vannak I/O változóik és saját workspace-ben dolgoznak (de bizonyos változóik lehetnek globálisak) .m file-ok: egy függvény – egy file (de egy .m file-ban lehetnek alfüggvények)

Függvények function [out1, out2] = függvénynév(input1, input2) Utána írt komment (%) megjelenik help-ként változó hosszúságú argumentumlista átadható (varargin és varargout) global, return függvények handle-i: @függvénynév (feval)

Programkonstrukciók: if if logikai_kif utasítások elseif logikai_kif else end

Programkonstrukciók: switch switch logikai_kif case érték1 utasítások case érték2 … otherwise end

Programkonstrukciók: ciklusok for változó = tól:köz:ig utasítások end while logikai_kif break, continue

Filekezelés, egyéb kezelés: fopen, fclose, feof bináris és szöveges beolvasás: fread, fwrite, fprintf, frewind, fgetl, fgets, load, save,… Egyéb hasznos dolgok: diary, pause

Objektum-orientált programozás Ami van: Függvény- és operátor túlterhelés (overloading) Adatok és eljárások rejtése Öröklődés Osztályok egymásba ágyazása Ami nincs: destruktorok, absztrakt osztályok, ::, virtuális öröklődés, template-ek

Osztályok létrehozása Az osztályhoz tartozik egy könyvtár (pl. @object), amibe az osztály metódusai kerülnek .m file-okban Konstruktor metódus: ugyanaz a neve, mint az osztálynak A konstruktorban létre kell hozni egy struktúrát, ami az osztály adatelemeit tartalmazza, ezután a konstruktor végén egy class utasítással jön létre az osztály

Metódusok Meghívandó függvényt a paramétereiből azonosítja (nem a szintaxis alapján, mint C++-ban vagy Java-ban) tehát célszerű a metódusokat úgy definiálni, hogy a legelső paraméter az osztály egy példánya legyen Sőt, ha az eljárás változtat az osztályon, célszerű azt vissza is adni Pl. fav_book = book(‘The Collector’); % book egy osztály, translate egy metódusa fav_book = translate(fav_book); % ha helyben akarjuk lefordítani Osztály tagjainak lekérése: methods Rejtett metódusok: @osztálynév/private könyvtárba (csak az osztály eljárásai használhatják)

Egyéb OOP Túlterhelés (overloading) Egyszerűen írjuk meg a megfelelő osztályhoz tartozó függvényt, a MATLAB azt fogja meghívni, ha azt egy ilyen osztályra hívtuk (pl. plot) Az operátorok átírása a megfelelő függvények megírásával lehetséges (pl. plus.m) Öröklődés Pl. child_obj = class(child_obj,'child_class',parent_obj); Gyermek nem látja szülő adattagjait (de elérheti a szülő lekérdező függvényeivel – mintha minden adat private lenne C++-ban) A szülő osztály egy a szülő nevével megegyező struktúrában látható a gyermek osztályban Többszörös öröklődés: class utasításban több szülő is megadható

Pár tipp az objektum-orientált programozáshoz Transzparens Java osztályok felé Pl. methods java.awt.Dimension –full Ha változtatunk az osztályon, clear classes Érdekes átírható függvények: end, display, loadobj, saveobj

Egyéb haladó programozás GUI készítés MATLAB-ból hívhatók C, Fortran és Java függvények a MATLAB is kínál fel API-t C és Fortran felé MATLAB .m file-okból C forrás és így önálló .exe készíthető (MATLAB compiler)

Az alap MATLAB függvénykönyvtára mátrixok és lineáris algebra (láttuk) polinomok (pl. gyökök keresése) interpoláció (pl. köbös spline-ok) geometriai algoritmusok (pl. voronoi-diagram) adat- és jelfeldolgozás (pl. illesztés, FFT) numerikus analízis (pl. integrálás, differenciálegyenletek) ritka mátrixok és műveleteik

Toolbox-ok Data Acquisition TB Database TB Image Processing TB Neural Network TB Optimization TB PDE TB Signal Processing TB Spline TB Statistics TB Symbolic Math TB (Maple) Wavelet TB

II. rész: MATLAB Grafika vektorokban tárolt adatok megjelenítése: plot parancs x = 0:pi/100:2*pi; y = sin(x); plot(x,y) y2 = sin(x-.25); y3 = sin(x-.5); plot(x,y,x,y2,x,y3)

A plot parancs Stílusok megadása: plot(x,y,’c’); plot(x,y,’k:’); plot(x,y,’+’); 'c', 'm', 'y', 'r', 'g', 'b', 'w', 'k‘ vonalstílusok: '-', '--', ':', '-.', 'none‘ markerek: '+', 'o', '*', 'x‘ 's' (square), 'd‘ (diamond), '^' (up triangle), 'v' (down triangle), '>' (right triangle), '<' (left triangle), 'p' (pentagram), 'h' (hexagram), ‘none’

Ábrák figure azonosítóval: figure(14) plot és sok más utasítás alapértelmezésben új képet nyit a kurrens kép rögzítése („rárajzolás”): hold on, kikapcsolása hold off törlés: clf

Több ábra egy képen subplot(X_max, Y_max, index); t = 0:pi/10:2*pi; [X,Y,Z] = cylinder(4*cos(t)); subplot(2,2,1); mesh(X) subplot(2,2,2); mesh(Y) subplot(2,2,3); mesh(Z) subplot(2,2,4); mesh(X,Y,Z)

Tengelyek axis auto (alapértelmezés) axis([xmin xmax ymin ymax]) axis square axis equal (tick-ek egyenlő közökre lesznek) axis on; axis off axes(!): tengely készítése tetszőleges pozícióban

Feliratozás title, xlabel, ylabel, legend, text korlátozottan felismeri a LATEX formátumú szimbólumokat

MATLAB grafikai objektumok minden objektumhoz (képhez, tengelyhez, szöveghez, vonalhoz, stb.) tartozik egy handle ezt többnyire az objektum létrehozó függvénye adja vissza ezen keresztül az objektum tulajdonságai elérhetők és a beállítható tulajdonságok lekérdezhetők: set, get gcf, gca, findobj h = gca; set(h,’LineWidth’, 3);

Objektumok tulajdonságainak interaktív kezelése a képen kattintva property editor szöveg, nyilak, vonalak beszúrása, forgatás, nagyítás

Haladó szintű megjelenítés 2D: bar, area, colorbar, pie, histogram, stem, stairs, … 3D: mesh, surf, contour, slice, … vektormezők: compass, rose, feather, quiver térfogat megjelenítése: isosurface, coneplot, streamline, streamtube, streamribbon, …

Képek megjelenítése BMP, HDF, JPEG, PCX, PNG, TIFF, XWD formátumok kezelése megjelenítés: image, imagesc file I/O: imread, imwrite képek is mátrixként tárolódnak, mátrixok is megjeleníthetők képként colormap: színtér manipulálása (ez is mátrix, kép értékei indexek ebben a színtérben)

Animáció on-line (élő) off-line (képek elmentése animációs file-ba, majd később visszajátszás): getframe, movie az animációk elmenthetők .avi-ba: avifile