Transcript prezentace

MATLAB
MATLAB


Systém pro provádění numerických výpočtů a vizualizaci
Umožňuje řešit úlohy mnohem pohodlněji než klasické
programovací jazyky (C++, VB, Delphi, Fortran)

Obsahuje mnoho funkcí

Toolbox – přídavný modul obsahující další funkce

FEMLAB nadstavba Matlabu pro řešení diferenciálních rovnic

MATLAB = MATicová + LABoratoř

Základní proměnná je matice (dvoudimenzionální pole)
MATLAB : proměnné
Vytvoření matice:

napsáním z klávesnice

vytvořením pomocí funkce

načtení ze souboru vytvořeného mimo Matlab
Vytvoření napsáním z klávesnice:

prvky jsou v hranatých závorkách
oddělovač prvků je mezera nebo čárka
oddělovač řádků je středník nebo Enter

ans … proměnná při vynechání jména (answer)


MATLAB : proměnné
nebo



M = [3 –4 1
–2 0 5
–3 2 4]
M = [3 –4 1; –2 0 5; –3 2 4]
jedno číslo:
řádkový vektor:
sloupcový vektor:
matice o jednom řádku a sloupci
matice o jednom řádku
matice o jednom sloupci
A=5
A = 5;
V = [3 –2 1]
W = [–4; 1; 5]
% nevypíše se
% řádkový vektor
% sloupcový vektor
MATLAB : proměnné
Zobrazení vytvořených matic:



napsáním jména se zobrazí obsah matice
who vypíše seznam proměnných
whos vypíše navíc podrobné informace
Mazání matic:


clear M
clear all
smaže matici M
smaže všechno
MATLAB : proměnné
Vytvoření pomocí funkce (příklady):
M = rand(m,n)
H = hilb(m)
C = magic(n)
% náhodná matice
% Hilbertova matice
% magický čtverec
Vektory s konstantním krokem:
vek = d:k:h
d … dolní mez
Příklady:
h … horní mez
V1 = 1:2:7
V1 =
1357
V2 = 1:7
V2 =
1234567
k … krok
MATLAB : proměnné
Načtení ze souboru:

soubor musí být ve formátu ASCII (např. Poznámký blok)

jeho obsahem musí být matice

použije se příkaz čtení
load
Uložení do souboru:
jmeno.prp -ascii
save

uloží všechno do
matlab.mat

příkaz load všechno načte po restartu Matlabu
MATLAB : operace
Maticové operace:
+
–
*
^
’
\
/


Operace s polem:
sčítání
odčítání
násobení
umocňování
transponování
levé dělení
pravé dělení
.*
.^
násobení
umocňování
.\
./
levé dělení
pravé dělení
Operace musí být proveditelná
Maticové násobení není komutativní, proto dvě dělení
x=A\b
x=b/A
je řešení
je řešení
Ax=b
xA=b
MATLAB : operace
Několik příkladů:
A = [3 –4 1; –2 0 5; –3 2 4]
B = [2 0 1; –1 1 –4; 3 –2 1]
C = A+B
C =
5 –4 2
–3 1 1
0 0 5
C = A*B
C =
13 –6
11 –10
4 –6
20
3
–7
MATLAB : operace
Dělení:
 2

1

  1
1
1
1
2 x1
 x2
 3 x3

0
x1
 x2
 3 x3

2
 x1
 x2
 2 x3

5
 3   x1   0 
   
3
x  2
 2  
 2   x 3    5 
Ax=b
A-1Ax=A-1b
Ix=A-1b
x=A-1b
x=A\b
 x1 ,
x2 ,
 2

x3  1

  3
1
1
3
1

1   0,

 2 
yM=c
yMM-1=cM-1
yI=cM-1
y=cM-1
y=c/M
2,
5
MATLAB : operace
Využití operace s polem:

vykonávají se po prvcích

tabulky a grafy funkcí
Příklad:
S=[1 2 3 4].* [1 2 3 4]
S=
1 4 9 16
D=[1 2 3 4].^2
… totéž …
MATLAB : operace
Tabulka a graf:
x=0:0.01:1;
% x-ové souřadnice
y=x.*sin(1./x);
% y-ové souřadnice
tabulka = [x’ y’]
% tabulka
plot(x,y)
MATLAB : indexy
Prvek v i-tém řádku a j-tém sloupci:
 2

M  1

  1
1
1
1
3

3

 2 
M(i,j)
M(2,3)=3
Vektorizování operací:

méně cyklů = rychlejší výpočty
M(2,[1,3])=[1 3]
M(2,[1,2,3])=[1 -1 3]
M(2,1:2:3)=[1 3]
M(2,1:3)=[1 -1 3]
M(2,:)=[1 -1 3]
MATLAB : speciální matice
eye
zeros
ones
diag
triu
tril
rand
magic
hilb
toeplitz
… jednotková matice
… nulová matice
… matice jedniček
… vybere nebo vytvoří diagonálu
… vybere horní trojúhelníkovou část
… vybere dolní trojúhelníkovou část
… náhodná matice
… magický čtverec
… Hilbertova matice
Skládání matic:
A=ones(3)
B=[A, zeros(3,2); zeros(2,3), eye(2)]
MATLAB : matem.funkce
sin
cos
tan
asin
acos
atan
exp
log
rem
abs
sqrt
sign
round
floor
ceil
Nápověda:
… přirozený logaritmus
… zbytek po celočíselném dělení
… absolutní hodnota
… odmocnina
… znaménko
… zaokrouhlování
… zaokrouhlování
… zaokrouhlování
help,
help plot
MATLAB :
max
min
sum
prod
sort
any
all

vektorové funkce
… maximální složka vektoru
… minimální složka vektoru
… součet složek vektoru
… součin složek vektoru
… uspořádání složek vektoru
… existenční kvantifikátor
… obecný kvantifikátor
vykonávají se po sloupcích
MATLAB : cyklus for
Cyklus s daným počtem opakování:
for i=A
příkazy
end

příkazy se vykonávají
pro každý prvek matice A
x=[];
for i = 1:n
x=[x,i^2]
end
Vznikne vektor x=[1 4 9 16 25 …]
Stejný vektor v opačném pořadí:
x=[];
for i = n:-1:1, x=[x,i^2], end
MATLAB : cyklus while
Cyklus řízený podmínkou:
while podmínka
příkazy
end
Příklad:
n=0;
while 2^n < a
n=n+1
end
n
Zobrazí nejmenší přirozené číslo n takové, že
2na.
MATLAB : podmíněný příkaz if
Rozhodování je (skoro) stejné jako ve VB:
if podmínka1
příkazy1;
elseif podmínka2
příkazy2;
…
else
příkazyX;
end
Relační operátory:
Logické operátory:
lze vypustit
lze vypustit
<, >, <=, >=, ==, ~=
& (a současně), | (nebo), ~ (negace)
MATLAB : programy
Program = M-soubor:
soubor s příponou m
skript … posloupnost příkazů v externím souboru
funkce … obsahuje hlavičku
vstupní a výstupní proměnné
function [vystup]=jmeno(vstup)
příkazy
MATLAB : programy
Příklad:
funkce počítající funkční hodnoty
f(x) = (x2-2x+2)sinx
function y=fce(x)
y=(x.^2-2*x+2).*sin(x);
Uloží se do souboru:
fce.m
Spuštění:
y=fce(-1:0.1:2)
MATLAB : programy
Příklad:
skript, který nakreslí graf funkce dvou proměnných
(vektorizovaný postup bez cyklů)
x=-2:0.1:2;
y=x;
n=length(x);
X=diag(x)*ones(n);
Y=ones(n)*diag(y);
Z=exp(-X.^2-Y.^2);
mesh(x,y,Z)
% x-ové souřadnice
% y-ové souřadnice
% počet souřadnic
% x-ové v matici X
% y-ové v matici Y
% funkční hodnoty
% graf
[X,Y]=meshgrid(-2:0.1:2); % generuje stejné X a Y
MATLAB : alternativy
Volně šiřitelné alternativy Matlabu:
OCTAVE
…
http://www.octave.org
SCILAB
…
http://www.scilab.org
Programy pro symbolické počítání:
komerční
…
MAXIMA
…
Toolbox, Maple, Derive, Mathematica
http://maxima.sourceforge.net
MATLAB : alternativy
Další studijní zdroje:

Zaplatílek, Doňar: Matlab pro začátečníky.

Zaplatílek, Doňar: Matlab tvorba uživatelských aplikací.

Kermit Sigmon: Matlab Primer (1993 volné vydání)