310 likes | 464 Views
MATLAB. www.mathworks.com jelenleg 6.5-ös változat (R13) ELTE: R12, 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
E N D
MATLAB • www.mathworks.com • jelenleg 6.5-ös változat (R13) ELTE: R12, 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)
MATLAB elemei • nyelv • fejlesztői környezet (IDE) • 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 egyetlen) 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
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: • A (1:3, 3:2:10); • A (:, 10); • 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 • több dimenziós mátrixok • „cell” tömbök: mátrixok rekordjai, indexelés {} operátorral • szöveg: ‘szervusz’ (’ jelek között) • rekord: • S(3) = struct('nev',‘Kovacs Agi',... ‘pontszam',70);
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
Programkonstrukciók: if if logikai_kif utasítások elseif logikai_kif utasítások else utasítások end
Programkonstrukciók: switch switch logikai_kif case érték1 utasítások case érték2 utasítások … otherwise utasítások end
Programkonstrukciók: ciklusok for változó = tól:köz:ig utasítások end while logikai_kif utasítások end break, continue
Haladó programozás • legújabb MATLAB-ok támogatják az objektumelvű programozást (osztályok, öröklődés, új típusok és operátoraik) • 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
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.)
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
Következő óra • Image Processing Toolbox • Wavelet Toolbox