155GIT1 / 1. cvičení

Z GeoWikiCZ
Skočit na navigaci Skočit na vyhledávání
stránky předmětudalší cvičení

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

Náplň

Grafické uživatelské rozhraní GNU Octave

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 - změna vektoru řádkový vs. sloupcový
 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
 a'*a         % pozor, takto je výsledkem matice !!!

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

(indexování)

 A(1, 2)
 A(4)

(násobení, transponovaná matice)Wikipedia

 B = 2 * A  % skalárem se násobí všechny prvky matice
 A*B        % násobení dvou čtvercových matic
 B'         % transpozice
 A*B'       % násobení dvou jiných čtvercových matic - operátor transpozice má vyšší prioritu než jiné operátory, transpozice se vykoná jako první

(náhodné hodnoty)

 C = rand(3, 4)

(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

 m = 0
 n = 10
 krok = 0.5
 m:krok:n

(submatice)

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

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

Maticové operace

(sčítání)

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

(maticové násobení)Wikipedia

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

(operace po prvcích)

 % násobení prvků se stejnými indexy
 f .* g
 % další operace po prvcích
 f ./ g
 f .^ 2
 f .^ g

(spojení matic)

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

(odstranění řádku/sloupce)

 % vložení prázdného řádku/sloupce = odstranění řádku/sloupce
 M(5,:) = []
 M(end,:) = []
 M(:, [3, 5]) = []

(matice s komplexními čísly)Komplexně sdružené číslo

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

Úlohy