Upload
gyjak
View
45
Download
6
Embed Size (px)
DESCRIPTION
zakladny popis MATLAB
Citation preview
1
vod do programu Matlab
MATLAB je pikov integrovan prosted pro vdeckotechnick vpoty, modelovn, simulace, prezentaci a analzu dat. Je to nstroj jak pro pohodlnou interaktivn prci, tak pro vvoj irokho spektra aplikac. Poskytuje svm uivatelm mocn grafick a vpoetn nstroje, ale i rozshl knihovny funkc spolu s vkonnm programovacm jazykem tvrt generace. Za nejsilnj strnku tohoto programu je povaovno mimodn rychl vpoetn jdro s optimlnmi algoritmy (programovan ve Fortranu a jazyce C), kter jsou proveny lty provozu na pikovch pracovitch po celm svt. Jeho implementace je provedena na vech vznamnjch platformch, od osobnch pota s operanmi systmy Windows 95, Windows NT a Linux pes potae Macintosh a po pracovn stanice Sun, Hewlett-Packard, IBM nebo DEC a grafick stanice Silicon Graphics. Vrobce programu MATLAB je firma The Maths Works - http://www.mathworks.com. eskm distributorem je firma Humusoft s.r.o. - http://www.humusoft.cz.
Zkladn vlastnosti: Interpretan jazyk - uivatel obdr odpov na svj povel tm okamit.
Zkladnmi objekty - matice, ale podporuje i sloitj typy, napklad vcerozmrn pole, datov struktury,.
Skldnm datovch typ je mon vytvoit libovoln sloit datov struktury.
Grafika - umouje snadn zobrazen a prezentaci zskanch vsledk. Lze vykreslit rzn druhy graf: dvourozmrn, trozmrn, histogramy, apod. MATLAB tak umouje otevt vce oken pro zobrazen graf najednou nebo zobrazit vce graf v jednom okn.
Oteven architektura pispla k velkmu rozen.
pln programovac jazyk - uivatel v nm mohou vytvet funkce "it na mru" pro jejich aplikace. Tyto funkce se zpsobem voln nijak neli od vestavnch funkc a jsou uloeny v souborech v iteln form. Dokonce vtina funkc s MATLABem dodvanch je takto vytvoena a opravdu vestavn jsou jen funkce zkladn. To m dv velk vhody: jazyk MATLABu je tm neomezen roziiteln a krom toho se uivatel me pi psan vlastnch funkc pouit z algoritm s programem dodvanch. Navc jsou takto koncipovan funkce snadno penosn mezi rznmi platformami, na kterch je MATLAB implementovn.
2
1 Charakteristika datovch struktur
speciln znaky
% poznmka ; konec pkazu s potlaenm vstupu vsledku
konec dky v matici ! uvd bn pkaz operanho systmu pokraovn pkazu na dalm dku ( ) zvorky vraz, indexov zvorky [ ] maticov zvorky { } buky
zkladn datov typy (MATLAB rozliuje velk a mal psmena v nzvech promnnch, nerozliuje mal a velk psmena v nzvech funkc)
typ pklad velikost
slo 5 matice 1 x 1, reln slo typu double, int8, int16, int32, uint8 (bezznamnkov int8), uint16, uint32
1.2e+3 2e-2 -1/5 5+i*3 matice 1 x1 , komplexn slo
znak 'a' matice 1 x 1 char(64)
etzec 'toto bude text' matice 1 x poet znak textu
datum now aktuln datum a as jako slo date aktuln datum jako etzec : dd-mmm-
yyyy clock aktuln datum jako vektor sel *y m d h
m s]
matice [1 2 3 4 5 6]
matice dek x sloupec matice 2 x 3
[1,2,3;4,5,6] [1 2 3;4 5 6] ['ahoj';'bye '] matice 2 x 4 ['ahoj','bye '] matice 1x 8 [1'a';22 'b'] matice 2 x 2 sparse(X) dk matice X
vcerozmrn pole a=[1,2,3;4,5,6] b=[7,8,9;10,11,12] c=cat(3,a,b)
matice dek matice a x sloupec matice a x 2 c(i,j,1)=a(i,j) c(i,j,2)=b(i,j)
3
buka c=cell(1) c{1}
vytvo jednu przdnou buku, kter me obsahovat slo, znak, etzec, matici, vicerozmrn pole, buku,
pole bunk c=cell(M,N,P,) c{m,n,p,}
vytvo MxNxPx rozmrn pole przdnch bunk, kter mohou obsahovat slo, znak, etzec, matici, vicerozmrn pole, buku,
strukturln pole s = struct('type',{'big','little'},'color',{'red'},'x',{3 4}) s(1)= type: 'little' color: 'red' x: 4
inline funkce f=inline('t^2') g=inline('sin(1/x)') f(2) g(f(pi))
funkce f(t)=t2
funkce g(x)=sin(1/x) 22
sin(1/pi*pi)
objekty
konverze jednotlivch datovch typ Existuj pedefinovan funkce na konverzi jednotlivch promnnch, zadanch typ parametr vybranch loh apod.
konverze mezi jednotlivmi typy sel;
konverze mezi etzci a sly;
konverze datumovch promnnch;
konverze bunk na strukturln pole;
konverze numerickch hodnot matice na buky;
konverze rznch souadnic (kartzsk, sfrick, )
.
dleit je pkaz eval (etzec), kter pete etzec a provede ho jako pkaz programu MATLAB
Pklad: (vytvoit 10 pseudonhodnch matici N x N oznaench M1,M2,M10) N=5 for index =1 : 10 matice_s_indexem= ['M',int2str(index),' = rand(N)']; eval(matice_s_indexem) end
4
2 Vstup a vstup dat
vstup dat
interaktivn v rmci pracovnho okna lze zadvat libovoln data pomoc piazovacho pkazu =
po vzv z klvesnice pomoc pkazu promnn=input('textov vzva'), program zobraz "textovou vzvu" a ek na vloen dat z klvesnice, data piad promnn
v MAT souboru (standardn ppona souboru je .mat, ale lze pout libovolnou) o promnn lze pomoc pkazu save jmno_souboru ( ppadn s cestou ) uloit
do souboru a pozdji pout pomoc pkazu load jmno_souboru ( ppadn s cestou ) jmno_promnnch
o soubor pkazu load me bt ASCII soubor s daty po dkch oddlenmi mezerami, MATLAB nate data do promnn stejnho jmna jako je ASCII soubor
v M-souboru pokud jsou data soust piazovacch pkaz v programu
natenm TXT souboru pomoc pkaz fopen, fscanf, fread,textread (pro MATLAB 6)
natenm WK1 souboru pomoc pkaz wk1read
tabulkov soubor pomoc tblread, tdfread, caseread
natenm Excel souboru (nutno dokoupit toolbox Excel LINK)
vnitn pamov promnn o eps (2.10-16), o pi (3,14), o Inf o NaN (Not a Number), o i, j (imaginrn jednika), o ans (jmno vsledku nepiazenho vrazu) o realmax, realmin maximln a minimln reln slo (1.7977e+308, 2.2251e-
308)
vstup dat
pamov promnn piazovacmi pkazy
interaktivn text pokud M-pkaz nekon ; je automaticky vypsn vsledek do pracovnho okna
MAT soubor pomoc pkazu save
TXT soubor pomoc pkaz fwrite, sprintf,
WK1 soubor pomoc pkaz wk1write
tabulkov soubor pomoc tblwrite, casewrite
Excel soubor (nutno dokoupit toolbox Excel LINK)
grafy 2D
5
o vytvoen grafu plot(X,Y), plot(X,Y,S), kde S je tznakov etzec charakterizujc barvu, typ bodu a typ ry p.'c+:' (c cyan, + typ bodu plus, : typ ry dotted)
o plot(X1,Y1,S1,X2,Y2,S2,) vce funkc do jednoho grafu o loglog(), semilogx(),semilogy() logaritmick mtko os o polar() polrn souadnice o area(X,Y) plocha pod kivkou o bar(), barh(), bar3h() sloupcov graf a sloupcov horizontln graf o comet() animovan prbh grafu o errorbar(X,Y,ERR) o ezplot('funkce'), fplot('funkce',argument) jednoduch vykreslen funkce
zadan jako etzec nebo jako inline funkce o pie(), pie3() kolov grafy o plotmatrix(X,Y) vykresl matici NxM graf zachycujc zvislost i-tho sloupce
matice X (i=1,,N) a j-tho sloupce matice Y (j=1,,M) o ribbon(X,Y) vykresl funkci jako psku o stem(X,Y) diskrtn posloupnost bod o stairs(X,Y) "schodovit" funkce
prava graf: title(), xlabel(), ylabel(), text(), gtext(), grid,
grafy 3D o plot3(x,y,Z) o [X,Y]=meshgrid(x,y) vvytvoen st z vektor souadnic x a y o mesh(Z) sov graf 3D o surf(Z) plon graf 3D o surfl(Z) plon graf 3D o surfc(Z) plon graf 3D s vrstevnicemi o ribbon(Y,Z) pskov graf o contour(Z) vrstevnicov graf o fill3(X,Y,Z) vyplnn graf
prava graf: title(), xlabel(), ylabel(), text(), gtext(), grid, shading, colormap(),
grafy standardn vystupuj do jednoho okna, lze koprovat do jinch SW (napklad Microsoft), ukldat jako M-soubor,
vstupn okno lze rozdlit na nkolik oblast pomoc pkazu subplot
vytvoen novho okna je realizovno pkazem figure, zachovn danho okna pkazem hold on
Pklad vykreslen grafu 2D funkce subplot(1,2,1) x=-2*pi:4*pi/100:2*pi; plot(x,sin(x)+cos(x/2)) plot(x,sin(x/2)+sin(x),'rx--') hold on plot(x,sin(x)+cos(x/2)) title('graf 1')
6
subplot(1,2,2) a=1:6; b=binopdf(a,10,.2); bar(a,b)
Pklad vykreslen grafu 3D funkce close all clear all x=-1:.1:1; y=-1:.1:1; f=inline('x.*exp(-x.^2)*y.*exp(-y.^2)','x','y'); n=9; for k=1:n, if k==1,a(k)=1; else a(k)=round((k*length(x)/(n))); end subplot(3,3,k) plot3(x,y,f(x,y(a(k)))) grid title (['y= 'num2str(y(a(k)))]) end
-10 -5 0 5 10-2
-1.5
-1
-0.5
0
0.5
1
1.5
2graf 1
1 2 3 4 5 60
0.05
0.1
0.15
0.2
0.25
0.3
0.35
7
Pklad vykreslen grafu 3D funkce
close all clear all [x,y]=meshgrid(-2:.1:2,-2:.1:2); f2=inline('x.*exp(-x.^2).*y.*exp(-y.^2)','x','y'); z2=f2(x,y); set(figure,'Name',['Funkce f2= 'formula(f2)],'NumberTitle','Off') shading flat colormap(autumn) subplot(2,2,1),plot3(x,y,z2),grid
-10
1
-10
1-0.2
0
0.2
y= -1
-10
1
-10
1-0.2
0
0.2
y= -0.6
-10
1
-10
1-0.2
0
0.2
y= -0.4
-10
1
-10
1-0.1
0
0.1
y= -0.2
-10
1
-10
1-0.05
0
0.05
y= 0.1
-10
1
-10
1-0.2
0
0.2
y= 0.3
-10
1
-10
1-0.2
0
0.2
y= 0.5
-10
1
-10
1-0.2
0
0.2
y= 0.8
-10
1
-10
1-0.2
0
0.2
y= 1
8
subplot(2,2,2),mesh(z2),rotate3d on, subplot(2,2,3),surf(z2),shading interp subplot(2,2,4),contour(z2,15)
3 Seznam zkladnch pkaz a funkc
generovn vektor (vektor=zacatek:krok:konec, linspace(), logspace(),) o 1:10 generuje 1,2,3,10 o 0:.1:10 generuje 0,0.1,0.2,,9.9,10 o (0:10)^2 generuje 0,1,4,9,16,100
prce s maticemi o A(i,j) (i,j)-t prvek matice A o A(i,:) i-t dka matice A o A(:,j) j-t sloupec matice A o A(:) cel matice jako vektor sloupcovch vektor o A(k) k-t prvek matice A representovan jako vektor sloupcovch vektor o A([1 3 5],[2 4] ) submatice matice A, kter obsahuje 1,3 a 5 dek a 2 a 4 sloupec o A(:,n:-1:1) matice A s pevrcenm poadm sloupc (n je poet sloupc) o A(:,sum(A)>0) submatice matice A, kter obsahuje pouze sloupce, jejich suma
je kladn o A(sum(A,2)>=0,:) submatice matice A, kter obsahuje pouze dky, jejich suma
je nezporn
opertory o aritmetick opertory plus(+), minus(-) mtimes(*) mrdivide(/) mldivide(\)
mpower(^) o prvkov opertory times(.*) rdivide(./) ldivide(.\) power(.^) nech A, B jsou matice typu 2 x 3, pak A/B = A*pinv(B) je typu 2x2,
A\B=(BT/AT)T je typu 3 x 3, A./B=[aij/bij]ij je typu 2 x 3 a A.\B=[bij/aij]ij je typu 2 x 3
nech A je tvercov matice , pak A^2=A*A, A^(1/2)=V*D^(1/2)*inv(V) kde V je matice vlastnch vektor a D je diagonln matice s vlastnmi sly na diagonle
nech A je libovoln matice, pak A.^p=*aij^p]ij o relan a logick opertory a funkce eg(==), ne(~=), lt(), le(=),
and(&), or(!), not(~) xor, any(A,dim), all(A,dim), isfinite(A), isnan(A), isinf(A), find(logick vraz) ~(A==B) prvek je jedna, kdy aijbij, jinak je prvek nula x(x>0) vypust z vektoru x nekladn prvky a zbytek peindexuje A(A>0) vypust z matice A nekladn prvky a zbytek peidexuje jako vektor
sloupcovch vektor any(A,1) vrt vektor dlky poet sloupc, prvek je jednika, kdy existuje
alespo jeden nenulov prvek ve sloupci, jinak je prvek nula all(A,2) vrt vektor dlky poet dk, prvek je jednika, kdy vechny prvky
v dku jsou nenulov, jinak je prvek nula
9
find(A>0) vrt vektor index, kde pro kter aij>0 (potno jako vektor sloupcovch vektor)
programov pkazy o dc a informan pkazy (clear, quit, exit, help, help demo, demo, who, whos,
return, pause, pack, exist, close ) o podmnn pkazy if logick vraz odd pkaz odd elseif logick vraz odd pkaz odd else odd
pkaz end (kde odd je ENTER nebo rka nebo stednk)
if k0,a=1; else a=NaN; end
if k0,a=1,else a=NaN,end
switch switch_vraz, case case_vraz, pkaz, case case_vraz, pkaz,,
otherwise, pkaz, end
o pkazy cyklu for promnn=M-vraz, pkaz, pkaz, , end pokud M-vraz je skalr , cyklus probhne jednou pokud M-vraz je vektor v dlky k , cyklus probhne k-krt, promnn
nabv postupn hodnot v(i), i=1,2,k pokud M-vraz je matice A typu m x n , cyklus probhne n-krt, promnn
nabv postupn hodnot A(:,j), kde j=1,2,n pokud M-vraz je matice A typu m x n x p, cyklus probhne (n x p)- krt,
promnn nabv postupn hodnot A(:,j,k), kde j=1,2,n a k=1,2,..p peruen cyklu lze realizovat pomoc break
o while M-vraz, pkaz, pkaz,, end peruen cyklu lze realizovat pomoc break
o makrokkazy
funkce sek programu uloen jako M-soubor, vstupn argumenty vyhodnot
jako parametry funkce, vechny promnn jsou lokln, shoda jmen s globlnmi promnnmi nevad, vyvolv se pomoc nzvu M-souboru Pklad funkce pro vpoet zkladnch statistickch ukazatel, uloeno jako zakl_stat.m function [prumer,rozptyl,vyb_rozptyl,hlaska]=zakl_stat(data,nazev_dat)
10
%Vypocet zakladnich statistickych charakteristik %Povinny parametr jsou data, nesmi byt nulovy prumer=NaN; rozptyl=NaN; vyb_rozptyl=NaN; if nargin
11
matematick funkce
o trigonometrick fce sin, cos, o exponenciln fce exp, log, o komplexn fce abs,angle, o zaokrouhlovn round, fix, floor, o speciln funkce beta,gamma, besselj, o funkce kombinatoriky faktor, perms, o transformace souadnic cart2sph, cart2pol,
maticov funkce
o generovn specilnch matic zeros, ones, eye, rand, magik, hilbert, pascal, o operace s maticemi diag, expm, logm, sgrtm, funm (p. funm(A,'sin')), o transformace matic A' o charakteristiky matice size, trace, det, norm, rank, cond, o inverze matic inv, pinv o rozklady matic lu, qr, chol, svd, a bze orth, null, o problmy vlastnch sel a vlastnch vektor eig, o funkce pro operace s dkmi maticemi
funkce matematick analzy
o polynomy poly, roots, conv, o interpolace spline, table1, o derivace a integrace diff, gradinet, quad, o koeny fce roots, zeroin, o een diferencilnch rovnic ode23, o Fourierova transformace o minimalizace max, min, fmin, fmax, o
optimalizan funkce (st tchto funkc je soust modulu Optimization Toolbox)
o voln extrmy fmin, fmins, fminu o vzan extrmy linern programovn, kvadratick programovn, obecn
funkce pro een vzanch extrm lp, qp, constr o speciln typy minimalizac seminf, attgoal o minmax optimalizace minimax o een rovnic rovnic f( x )=0 fzero, fsolve, \, o vyrovnvn kivek (MN) curvefit, leastsq, nnls, conls, \
statistick funkce - deskritptivn statistiky o maximum, minimum max, min o prmry mean, geomean, hermmean, trimmean o rozptyly, smrodatn odchylky var,std
12
o ikmost, piatost, momenty kurtosis, skewness, moment o robusn statistiky iqr, mad, median, range o kvartily, percentily - quantile, prctile o celkov statistiky grpstats o vcerozmrn statistiky corr, cov
rzn typy rozdlen o pdf funkce hustoty, o cdf distribun funkce, o inv kvantilov funkce, o fit odhady parametr o rnd genertory nhodnch sel, o stat momenty
o normpdf, normcdf, norminv,Normand, normstat o beta rozdlen, negativn beta rozdlen, rozdlen extrmnch hodnot,
exponenciln, binomick, chi-kvadrat, F-rozdlen, Gamma rozdlen, Studentovo, Weibullovo, logaritmicko normln, rovnomrn ,.
Statistick grafy o boxplot, hist, normplot, qqplot, wblplot, errorbar, pareto
Statistick hypotzy o Parametrick ttest, ttest2,ztest, anova
o Neparametrick signrank, ranksum,signtest, friidman, kruskalwallis, kstest,lillietest,jbtest