155GIT1 / 1. cvičení: Porovnání verzí

Z GeoWikiCZ
mBez shrnutí editace
mBez shrnutí editace
Řádek 18: Řádek 18:
** operátor dvojtečka, submatice
** operátor dvojtečka, submatice
** maticové operace
** maticové operace
* speciální matice {{bullet}} <code>ones()</code>, <code>zeros()</code>, <code>eye()</code>
* speciální matice {{bullet}} <code>ones()</code>, <code>zeros()</code>, <code>eye()</code>, <code>rand()</code>
* vytváření skriptů
* vytváření skriptů
** <tt>File -> New -> Script</tt>
** <tt>File -> New -> Script</tt>

Verze z 26. 2. 2020, 14:21

První seznámení s Matlabem a GNU Octave - proměnné, matice, vektory, indexování, skripty

Náplň cvičení

Grafické uživatelské rozhraní GNU Octave
  • nápověda, help, doc
  • skalární hodnoty
  • proměnné, pole, matice (dvourozměrné)
    • základní operace s proměnnými, inkrementace
    • vektor sloupcový, řádkový
  • matice, dimenze, ukázka konzistence
    • indexování matic
    • operátor dvojtečka, submatice
    • maticové operace
  • speciální matice • ones(), zeros(), eye(), rand()
  • vytváření skriptů
    • File -> New -> Script
    • spuštění: F5
    • výstup se vypisuje do Command Window
    • skripty z příkazové řádky • edit, run

Ukázky

Tipy
  • Pokud je příkaz ukončen středníkem, tak hodnoty nevypisuje
  • Více příkazů lze v jedné řádce oddělit čárkou anebo středníkem
  • Dlouhý příkaz lze rozdělit na více řádků pomocí ...
  • Pohyb v historii příkazů (klávesové šipky nahoru a dolu)
  • Doplňování příkazů pomocí klávesy TAB (dvojstisk)
  • Komentáře začínají znakem % (v Octave i znakem #) a jsou ukončeny koncem řádky
  • Rozsah numerických datových typů realmin, realmax
  • Textové řetězce jsou ohraničeny jednoduchými uvozovkami (v Octave i dvojitými uvozovkami)
  • Nastavení formátu výpisu numerických hodnot:
    • format long - výpis na plný počet desetinných míst
    • format short - výpis na omezený počet desetinných míst (defaultní)

Skalární hodnoty

(matice o dimenzi 1x1)

 s = 1
 c = 2.3   % pozor, nutno používat desetinnou tečku!
 a = 3,9   % čárka odděluje příkazy

Základní matematické operace

(+, -, *, /, závorky, mocnina, odmocnina)

 s = 1
 t1 =  s + 4  * 2  % násobení, dělení má prioritu před sčítáním, odčítáním  (t1 = 9)
 t2 = (s + 4) * 2  % operátor závorka má vždy nejvyšší prioritu             (t2 = 10)
 u  = t1 / t2 ^ 2  % mocnina má prioritu před +, -, *, /                     (u = 0.09)
 v1 = t1^(1/2)     % zápis druhé odmocniny
 v2 = sqrt(t1)     % druhá odmocnina pomocí interní matematické funkce Matlabu/Octave

Vektory

(řádkový vs. sloupcový)

 a = [3 2 5]  % taktéž a = [3,2,5]
 b = [2;4;6]
 c = a*b
 a'           % transpozice
 a*a          % chybné rozměry pro násobení vektorů
 a*a'         % skalární součin vektoru se sebou samým = součet čtverců všech prvků vektoru

Matice

(musí být obdélníková)

 A = [1 2 3; 3 2 1;-1 -2 -3]
 B = [1 2 3; 4 5; 6]          % chybné zadání - nejsou definovány všechny prvky matice

(náhodné hodnoty)

 C = rand(3, 4)

(indexování)

 A(1, 2)
 A(4)

(násobení)

 B = 2 * A  % skalárem se násobí všechny prvky matice
 A*B        % chybné rozměry pro násobení vektorů
 B'         % transpozice
 A*B'

(dimenze)

 rows(C)    % pouze v Octave
 columns(C) % pouze v Octave
 length(C)
 size(C)
 [r, c] = size(C)
 size(C,1)
 size(C,2)

Operátor dvojtečka

(výčet, rozsah)

 i = -3
 j = 3
 i:j

 I = 2
 J = -2
 I:J
 J:I

 a = 0
 b = 10
 c = 0.5
 a:c:b

(submatice)

 A = [ 2 3 4 5; 6 8 9 1; 3 4 6 7; 3 4 7 8 ]
 A(2:3,3)
 A(1:3,2:3)
 A(:,2)
 A(end,1:2)
 A(:,end)

 A(6,5)        % nedefinovaný prvek matice
 A(6,5) = 10   % matice lze takto rozšířit

Maticové operace

(sčítání)

 % skalární hodnota
 A + 10
 % matice stejného rozměru
 a = [2 3; 4 5], b = ones(2) + eye(2)
 a + b
 A + b        % nelze sčítat matice různých rozměrů

(násobení)Wikipedia

 % skalární hodnota
 A * 10
 % (m, n) x (n, p)
 a * b
 A * b        % nelze - rozměry matic neodpovídají rozměrům maticového násobení

(operace po prvcích)

 % násobení prvků se stejnými indexy
 a .* b
 % další operace
 a ./ b
 a .^ 2
 a .^ b

(transponovaná matice)WikipediaKomplexně sdružené číslo

 B = [ 0, 1 + 5i; 10 + 3i, -1 ]
 B'
 B.'

(spojení matic)

 % horizontálně
 [a, b]     % nebo [a b]
 % vertikálně
 [a; b]
 % rozměr se musí shodovat
 c = 5 + zeros(3,2)
 [a, c]     % nelze
 [a; c]

(odstranění řádku/sloupce)

 A(5,:) = []
 A(end,:) = []
 A(:, [3, 5]) = []

Úlohy