Základy algoritmizace a programování

Transkript

Základy algoritmizace a programování
Základy algoritmizace a programování
Práce s maticemi
Přednáška 9
23. listopadu 2009
ZAPG
Pole: vektory a matice
Vektor (jednorozměrné pole)
Matice (dvourozměrné pole)
deklarace
statická
int v1[5];
dynamická
int * v2;
+ přidělení paměti:
v2 = (int *)
deklarace
statická
int m1[2][3];
dynamická
int * * m2;
+ přidělení paměti:
m2 = (int **)
malloc(5*sizeof (int));
malloc(2*sizeof(int *));
for(i=0; i< 2; i++)
m2[i]= (int *)
malloc(3*sizeof(int));
ZAPG
Operace
NELZE s celým polem najednou!
Pomocí cyklů – s každý prvkem
Vektor – jeden cyklus
prvek v[i]
načtení hodnot
for(i=0; i<5; i++)
scanf("%d", &v1[i]);
tisk hodnot
for(i=0; i<5; i++)
printf("%d", v1[i]);
Matice – dva cykly
prvek m[i][j]
načtení hodnot
for(i=0; i<2; i++)
for(j=0; j<3; j++)
scanf("%d",&m1[i][j]);
tisk hodnot
for(i=0; i<2; i++)
for(j=0; j<3; j++)
printf("%d",m1[i][j]);
ZAPG
Úvod do MATLABu
Komponenty MATLABu
Jazyk
Prostředí
Grafika
Knihovny funkcí
Interface (C, Fortran)
ZAPG
Balíčky – toolboxes
Simulink
MATLAB Compiler
MATLAB C/C++ Graphics Library
MATLAB C/C++ Math Library
Signal Processing Toolbox
Filter Design Toolbox
Neural Network Toolbox
Spline Toolbox
Control System Toolbox
Statistics Toolbox
System Identifcation Toolbox
Fuzzy Logic
Image Processing Toolbox
Mapping Toolbox
Optimization Toolbox
Symbolic Math Toolbox
a mnoho dalších
ZAPG
Spuštění MATLABU
příkazový řádek : matlab
ZAPG
Kde získat informace
příkaz help
příkaz lookfor
informační okno
informační navigátor
stránka MathWorks :
www.mathworks.com/products/matlab
české stránky :
www.humusoft.cz/produkty/matlab
ZAPG
Informace – příkaz help
>>help inv
INV
Matrix inverse.
INV(X) is the inverse of
the square matrix X.
A warning message ...
See also SLASH, PINV ...
Overloaded methods ...
ZAPG
Informace – příkaz lookfor
>> lookfor inverse
INVHILB Inverse Hilbert matrix.
ACOS Inverse cosine.
ACOSH Inverse hyperbolic cosine.
...
INV Matrix inverse.
...
příkaz
>> lookfor -all inverse
hledá slovo inverse v celém helpu.
ZAPG
Informace – informační okno
Je možné spustit příkazem
>>helpwin
nebo z menu
Poskytuje tytéž informace jako help, ale přehledněji
ZAPG
Informace – informační navigátor
>>helpdesk
Spustí "průzkumník" informačních souborů, které jsou
dostupné ve formátu html.
Pokud víme, co hledáme, lze použít příkaz
>>doc <jméno funkce nebo příkazu>
ZAPG
Matice – hlavní datový typ MATLABu
skalární proměnná – matice rozměru (1 × 1)
vektor – matice rozměru (1 × n) nebo (m × 1)
matice (m × n)
Zadání matice
po prvcích
ze souboru
genenerováním pomocí zabudovaných funkcí
vytváření matic vlastními funkcemi
ZAPG
První operace
Zadání matice po prvcích:
řádky a = [1 2 3 4] nebo b = [1, 2, 3, 4]
sloupce a = [1 2 3 4]’ nebo b = [1; 2; 3; 4]
matice A = [1 2; 3 4]
>>A = [16 3 2 13;5 10 11 8;9 6 7 12;4 15 14 1]
A =
16
3
2 13
5 10 11
8
9
6
7 12
4 15 14
1
Po zadání je vytvořena v prostředí MATLABu vytvořena
proměnná A, můžeme ji používat.
>>sum(A)
ans =
34 34 34 34
Pokud není určena proměnná, kam se má uložit výsledek,
použije se proměnná ans
ZAPG
Operace s maticemi
MATLAB
C
Transponování matice:
for(i=0; i<n; i++)
for(j=0; j<m; j++)
B[i][j] = A[j][i];
Sčítání prvků – ve sloupcích
for(i=0; i<n; i++)
{ sl[i] = 0;
for(j=0;j<m;j++)
sl[i]=sl[i]+A[i][j];}
Sčítání prvků – v řádcích
for(j=0; j<m; j++)
{ sr[j] = 0;
for(i=0;i<n;i++)
sr[j]=sr[j]+A[i][j];}
Transponování matice:
operace ’
B = A’
Sčítání prvků – ve sloupcích
operace sum
sl = sum(A);
Sčítání prvků – v řádcích
sr= sum(A’)’
dostaneme vektor sloupec
ZAPG
Operace s maticemi
C
Sčítání prvků – na hlavní
diagonále
sd = 0;
for(i=0; i<n; i++)
{ sd=sd+A[i][i];}
Sčítání prvků – na vedl.
diagonále
sv=0;
{ for(i=0;i<n;i++)
sv=sr+A[n-i-1][n-i-1];}
MATLAB
Sčítání prvků – na hlavní
diagonále
operace diag, sum
sd = sum(diag(A))
Sčítání prvků – na vedl.
diagonále
operace fliplr, diag, sum
sv = sum(diag(fliplr(A)));
ZAPG
MATLAB – indexy
Indexy prvků matic:
Prvek v i–tém řádku, j–tém sloupci: A(i,j)
A(4,2) = 15 ... změní hodnotu jednoho prvku
Součet prvků ve 4. sloupci lze zapsat:
A(1,4)+A(2,4)+A(3,4)+A(4,4)
Pokus manipulovat s prvkem "mimo matici"
t=A(4,5) vyvolá chybové hlášení:
??? Index exceeds matrix dimension
ALE
>>X = A;
>>X (4,5) = 17
X=
16
3
2 13
0
5 10 11
8
0
9
6
7 12
0
4 15 14
1 17
ZAPG
MATLAB – operátor :
>>1:10
1 2 3 4 5 6 7 8
>>100:-7:50
100 93 86 79 72
>>0:pi/4:pi
0 0.7854 1.5708
A(1:k,j)
sum(A(1:4, 4))
sum(A(:,end))
sum(1:16)/4
B=A(:,[1 3 2 4])
9 10
65 58 51
2.3562 3.1416
prvních k prvků sloupce j
součet prvků 4. sloupce
součet prvků posledního sloupce
součet čísel 1..16 dělený 4
pro každý řádek A
se do B se uloží prvky v zadaném pořadí
spojení matic: C=[A B], C=[A;B]
odstranění řádků a sloupců: A(i,:)=[ ] , A(:,j)=[ ]
ZAPG
MATLAB –
Výrazy
proměnné
čísla
operátory
funkce
Proměnné:
není nutné deklarovat typ, určovat rozměr
při prvním použití jména se vytvoří proměnná a je jí přidělena
pamět’
pokud už proměnná existuje, je změněna hodnota, případně
rozměr
jména: písmena, číslice, _, záleží na velikosti písmen
Operátory:
+, -, *, /
\
ˆ, ’, ( )
ZAPG
Čísla
Reálná čísla (double precission) (8 bytů)
zpravidla 16 znaků – mantisa, ±308 – exponent
Inf = ∞
NaN (Not a Number) – při 0/0, ∞/∞, ∞ − ∞, apod.
eps = 2.22 · 10−16
pi = π = 3.1415926
Komplexní čísla – 16 bytů
i, j – imaginární jednotky
realmin, realmax
ZAPG
Příklady
a = 2
a = 2.0
z = 1 + 2i
z = 1 + 2*i
real(z), imag(z)
abs(z), conj(z)
z = r * exp(i * phi)
huge = exp(log(realmax))
toobig = pi*huge
huge= 1.7977e+308
toobig = Inf
ZAPG
Formát výstupu (zobrazení čísel)
format
format short
format long
format short e
format long e
format rat
implicitní, totéž jako short;
5 znaků za desetinnou tečkou;
15 znaků za desetinnou tečkou;
pohyblivá desetinná tečka,
5 znaků za desetinnou tečkou;
pohyblivá desetinná tečka,
15 znaků za desetinnou tečkou;
nahrazení čísla racionálním zlomkem
ZAPG
MATLAB – Generování matic
Jednoduché funkce pro generování matic
zeros(m,n)
ones(m,n)
eye(m,n)
rand(m,n)
Operace
"maticové"
A+B, A-B, A * B, A / B, A \ B,
"po prvcích
A.*B, A./B, A.ˆB, elementární funkce log10(A)
kombinace B = A -8.5; B(1:2,2:3)=0
Funkce
size(A), length(a)
det(A), inv(A), rank(A), eig(A)
ZAPG
Řetězce znaků
a = ’Matrix’;
b = ’Laboratory’;
c = [a(1:3) b(1:3)]
ZAPG
Grafika - příkaz plot
x = 0:pi/100:2*pi;
y = sin(x);
plot(x,y)
xlabel(’x = 0:2pi’)
ylabel(’Sine of x’)
title(’Plot of the Sine Function’, ...
’FontSize’,12)
ZAPG
Grafika
Příkaz figure vytvoří nové grafické okno, které se stane
aktivním.
Příkaz figure(n): grafické okno n se stane aktivním.
Několik křivek v jednom okně
y2 = sin(x-.25);
y3 = sin(x-.5);
plot(x,y,x,y2,x,y3)
legend(’sin(x)’,’sin(x-.25)’, ’sin(x-.5)’)
Typ a barva čar
plot(x,y,’color_style_marker’)
color_style_marker – řetězec 1–4 znaků, určují styl a barvu
barva: c, m, y, r, g, b, w, k
styl čáry: -, –, :, -.
typ markeru: +, o, *, x, s, d, ˆ, v, >, <, p, h
Více o grafice bude na 11. přednášce
ZAPG

Podobné dokumenty

zde

zde vyhledání nápovědy podle hesla lookfor for ukončení MATLABu výpis obsahu adresáře informace o proměnných uložení proměnných na disk a zpětné vyzvednuti změna formátu zobrazování čísel format short

Více

ROZ1 - Cv. 1 - the Department of Image Processing

ROZ1 - Cv. 1 - the Department of Image Processing ÚTIA - ZOI ROZ1 - Cv. 1 - Zobrazenı́ snı́mku a základy Matlabu

Více

MATLAB, v. 6.5.0180913, Release 13

MATLAB, v. 6.5.0180913, Release 13 systémem WIN98 nelze využít klávesu Help z nabídky. Dostupné je používání dříve uvedeného způsobu nápovědy pomocí help funkce. Znamená to, že je třeba znát jména hledaných fukcí (viz dále). Je však...

Více

Lineární a adaptivní zpracování dat

Lineární a adaptivní zpracování dat povahy, který nese nehmotnou informaci o stavu a dynamice systému či procesu, který jej generuje. Je-li zdrojem informace živý organismus, pak hovoříme o biosignálech, a to bez ohledu na podstatu n...

Více

Internet-scale multimedia retrieval

Internet-scale multimedia retrieval J. Lokoč, P. Čech, J. Novák, T. Skopal, SISAP, 2012, Toronto, Canada, Springer Cut-region: A Compact Building Block For Hierarchical Metric Indexing D. Novak, M. Batko, P. Zezula, Information syste...

Více

Poměr frekvencí tónů vzdálených o oktávu je 2:1

Poměr frekvencí tónů vzdálených o oktávu je 2:1 Základy zpracování signálu Jiří Krejsa, A2/710 [email protected]

Více

The foundation of versatility

The foundation of versatility shower profiles and accessories

Více

Přenos dat

Přenos dat předmět Přenos dat pro studenty navazujícího magisterského studia, kurz PD je na fakultě nabízen ve studijním programu Informační a komunikační technologie. Marek Dvorský je odborným asistentem na ...

Více