Základy algoritmizace a programování
Transkript
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
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
ROZ1 - Cv. 1 - the Department of Image Processing
ÚTIA - ZOI
ROZ1 - Cv. 1 - Zobrazenı́ snı́mku a základy Matlabu
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...
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...
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...
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]
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 ...