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

Z GeoWikiCZ
mBez shrnutí editace
 
(Není zobrazeno 23 mezilehlých verzí od 2 dalších uživatelů.)
Řádek 1: Řádek 1:
{{Geoinformatika}}
{{Geoinformatika}}
{{Cvičení|155GIT1|2|Maticové a matematické funkce, speciální proměnné, operátory}}
{{Cvičení|155GIT1|2|Matlab - Maticové a matematické funkce, speciální proměnné, operátory}}


== Náplň cvičení ==
== Náplň ==


# opakování
# opakování
Řádek 8: Řádek 8:
#* vytvořit proměnnou A o rozměrech [3x4] s náhodnými čísly od 0 do 9
#* vytvořit proměnnou A o rozměrech [3x4] s náhodnými čísly od 0 do 9
#* vybrat třetí element z druhého řádku a vynásobit ho dvěma
#* vybrat třetí element z druhého řádku a vynásobit ho dvěma
# operátor dvojtečka
# speciální matice {{bullet}} <code>ones()</code>, <code>zeros()</code>, <code>eye()</code>, <code>rand()</code>
#* submatice
#* náhodné přirozené číslo {{bullet}} <code>randi()</code>
# rozšiřování hranic matice
# speciální matice {{bullet}} <code>ones()</code>, <code>zeros()</code>, <code>eye()</code>
#* magický čtverec {{bullet}} <code>magic()</code>
#* magický čtverec {{bullet}} <code>magic()</code>
# operace s maticemi
#* sčítání
#* násobení, dělení
#* transponování s komplexně sdruženými hodnotami, bez komplexně sdružených hodnot
#* spojování
#* odstraňování
# maticové funkce {{bullet}} <code>diag()</code>, <code>det()</code>, <code>inv()</code>, <code>find()</code>
# maticové funkce {{bullet}} <code>diag()</code>, <code>det()</code>, <code>inv()</code>, <code>find()</code>
#* náhodné přirozené číslo {{bullet}} <code>randi()</code>
# relační a logické operátory
# relační a logické operátory
# základní matematické funkce
# základní matematické funkce
#* v matici - prvek po prvku {{bullet}} <code>abs()</code>, <code>sign()</code> {{bullet}} <code>exp()</code>, <code>log()</code> {{bullet}} goniometrické {{bullet}} zaokrouhlovací
#* v matici - prvek po prvku {{bullet}} <code>abs()</code>, <code>sign()</code> {{bullet}} <code>exp()</code>, <code>log()</code> {{bullet}} zaokrouhlovací {{bullet}} goniometrické, <code>atan2(Y,X)</code>
#* v matici - sloupcové {{bullet}} <code>min()</code>, <code>max()</code> {{bullet}} <code>sum()</code>, <code>prod()</code> {{bullet}} <code>sort()</code> {{bullet}} <code>mean()</code>, <code>median()</code> {{bullet}} <code>std()</code>, <code>var()</code>
#* v matici - sloupcové {{bullet}} <code>min()</code>, <code>max()</code> {{bullet}} <code>sum()</code>, <code>prod()</code> {{bullet}} <code>mean()</code>, <code>median()</code> {{bullet}} <code>std()</code>, <code>var()</code> {{bullet}} <code>sort()</code>  
#* <code>atan2(Y,X)</code>
#* <code>sortrows()</code>


== Ukázky ==
== Ukázky ==


=== Operátor dvojtečka ===
=== Maticové funkce a relační operátory ===
 
''(výčet, rozsah)''
 
<source lang=octave>
%
i = -3
j = 3
i:j
%
I = 2
J = -2
I:J
J:I
%
a = 0
b = 10
c = 0.5
a:c:b
</source>
 
''(submatice)''
 
<source lang=octave>
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)
A(6,5) = 10 % !!!
</source>
 
=== Maticové operace ===
 
''(sčítání)''
 
<source lang=octave>
% 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
</source>


''(násobení)'' {{bullet}} {{wikipedia|Násobení matic|Wikipedia}}
* [http://geo.fsv.cvut.cz/vyuka/155git1/matlab/matlab.pdf#page=25 maticové funkce]
* [http://geo.fsv.cvut.cz/vyuka/155git1/matlab/matlab.pdf#page=26 relační a logické operátory]


<source lang=octave>
''(ukázky použití maticových funkcí)''
% skalární hodnota
A * 10
% (m, n) x (n, p)
a * b
A * b % nelze
</source>
 
''(operace po prvcích)''


<source lang=octave>
<source lang=octave>
% násobení prvků se stejnými indexy
d = rand(1,4)
a .* b
D = diag(d)
% další operace
a ./ b
a .^ 2
a .^ b
</source>
</source>
''(transponovaná matice)'' {{bullet}} {{wikipedia|Transpozice matice|Wikipedia}} {{bullet}} {{wikipedia|Komplexně sdružené číslo}}


<source lang=octave>
<source lang=octave>
B = [ 0, 1 + 5i; 10 + 3i, -1 ]
A = -2 + 4*rand(4,3)  % náhodné reálné hodnoty v rozsahu od -2 do 2
B'
a = diag(A)
B.'
a1 = diag(A,1)
a2 = diag(A,-1)
</source>
</source>
''(spojení matic)''


<source lang=octave>
<source lang=octave>
% horizontálně
F = -1 + 3*rand(4)
[a, b] % nebo [a b]
Fi = inv(F)          % pouze pro čtvercovou matici
% vertikálně
F * Fi
[a; b]
% rozměr se musí shodovat
c = 5 + zeros(3,2)
[a, c] % nelze
[a; c]
</source>
</source>
''(odstranění řádku/sloupce)''


<source lang=octave>
<source lang=octave>
A(5,:) = []
F>=0
A(end,:) = []
find(F>=0)
A(:, [3, 5]) = []
F( find(F>=0) )
F( find(F>=0) ) = 2
</source>
</source>


=== Maticové funkce, relační operátory a matematické funkce ===
=== Matematické funkce ===


* [http://geo.fsv.cvut.cz/user/gin/git1/matlab/matlab.pdf#24 maticové funkce]
* [http://geo.fsv.cvut.cz/vyuka/155git1/matlab/matlab.pdf#page=27 matematické funkce]
* [http://geo.fsv.cvut.cz/user/gin/git1/matlab/matlab.pdf#25 relační a logické operátory]
* [http://geo.fsv.cvut.cz/user/gin/git1/matlab/matlab.pdf#26 matematické funkce]


''(ukázky použití maticových a matematických funkcí)''
''(ukázky použití matematických funkcí)''
 
<source lang=octave>
d = rand(1,4)
D = diag(d)
</source>


<source lang=octave>
<source lang=octave>
E = -2 + 4*rand(4,3) % náhodné hodnoty v rozsahu od -2 do 2
  abs(A)
e = diag(E)
sign(A)
e1 = diag(E,1)
e2 = diag(E,-1)


sign(E)
round([4.7 -6.7])
abs(E)
ceil([4.7 -6.7])  % zaokrouhluje k plus nekonečnu
floor([4.7 -6.7])  % zaokrouhluje k minus nekonečnu
fix([4.7 -6.7])    % celá část čísla
round(A,2)


max(E)
e1 = exp(1)
maxE = max(max(E))
log(e1)


find(E>=0)
B = randi([2 7],3,5) % náhodná přirozená čísla v rozsahu od 2 do 7
E( find(E>=0) ) = 2
max(B)
max(B')
maxB = max(max(B))


sEr = sum(E')
Brad = sum(B')
minsEr = min(sEr)
minBrad = min(Brad)
indEr = find(sEr == minsEr) % index řádku s nejmenším řádkovým součtem
ind = find(Brad == minBrad) % index řádku s nejmenším řádkovým součtem
</source>
B(ind,:)                    % řádek s nejmenším řádkovým součtem


<source lang=octave>
data = [7.1 7.2 7.1 7.4]
F = -1 + 3*rand(4)
mean(data)
Fi = inv(F)
std(data) / sqrt(length(data))   % střední chyba průměru
F * Fi
sqrt( var(data) / length(data) )  % totéž


round(F)
sort(B)
ceil(F)
sort(B,2)
floor(F)
sort(B,2,'descend')
fix(F)  % celá část čísla


sort(F)
sortrows(B,1)     % srovnání celých řádků podle hodnot v 1.sloupci
sort(F,2)
sort(F,2,'descend')
</source>
</source>


Řádek 178: Řádek 96:


* [[155GIT1 / 2. cvičení / Příklady|2. cvičení - příklady]]
* [[155GIT1 / 2. cvičení / Příklady|2. cvičení - příklady]]
<!-- -->

Aktuální verze z 1. 3. 2023, 20:17

Matlab - Maticové a matematické funkce, speciální proměnné, operátory

Náplň

  1. opakování
    • vytvoření a spuštění skriptů • edit, run
    • vytvořit proměnnou A o rozměrech [3x4] s náhodnými čísly od 0 do 9
    • vybrat třetí element z druhého řádku a vynásobit ho dvěma
  2. speciální matice • ones(), zeros(), eye(), rand()
    • náhodné přirozené číslo • randi()
    • magický čtverec • magic()
  3. maticové funkce • diag(), det(), inv(), find()
  4. relační a logické operátory
  5. základní matematické funkce
    • v matici - prvek po prvku • abs(), sign()exp(), log() • zaokrouhlovací • goniometrické, atan2(Y,X)
    • v matici - sloupcové • min(), max()sum(), prod()mean(), median()std(), var()sort()
    • sortrows()

Ukázky

Maticové funkce a relační operátory

(ukázky použití maticových funkcí)

 d = rand(1,4)
 D = diag(d)
 A = -2 + 4*rand(4,3)  % náhodné reálné hodnoty v rozsahu od -2 do 2
 a = diag(A)
 a1 = diag(A,1)
 a2 = diag(A,-1)
 F = -1 + 3*rand(4)
 Fi = inv(F)          % pouze pro čtvercovou matici
 F * Fi
 F>=0
 find(F>=0)
 F( find(F>=0) )
 F( find(F>=0) ) = 2

Matematické funkce

(ukázky použití matematických funkcí)

 abs(A)
 sign(A)

 round([4.7 -6.7])
 ceil([4.7 -6.7])   % zaokrouhluje k plus nekonečnu
 floor([4.7 -6.7])  % zaokrouhluje k minus nekonečnu
 fix([4.7 -6.7])    % celá část čísla
 round(A,2)

 e1 = exp(1)
 log(e1)

 B = randi([2 7],3,5) % náhodná přirozená čísla v rozsahu od 2 do 7
 max(B)
 max(B')
 maxB = max(max(B))

 Brad = sum(B')
 minBrad = min(Brad)
 ind = find(Brad == minBrad) % index řádku s nejmenším řádkovým součtem
 B(ind,:)                    % řádek s nejmenším řádkovým součtem

 data = [7.1 7.2 7.1 7.4]
 mean(data)
 std(data) / sqrt(length(data))    % střední chyba průměru
 sqrt( var(data) / length(data) )  % totéž

 sort(B)
 sort(B,2)
 sort(B,2,'descend')

 sortrows(B,1)     % srovnání celých řádků podle hodnot v 1.sloupci

Úlohy