155GIT1 / 6. cvičení: Porovnání verzí
m →Ukázky |
|||
Řádek 16: | Řádek 16: | ||
<source lang=octave> | <source lang=octave> | ||
% iterativni proces skonci jiz pri splneni jedne z pozadovanych presnosti | % iterativni proces skonci jiz pri splneni jedne z pozadovanych presnosti | ||
dx = 10; % pozadovana presnost v souradnici x | dx = 10; % pozadovana presnost v souradnici x | ||
dy = 10; % pozadovana presnost v souradnici y | dy = 10; % pozadovana presnost v souradnici y | ||
i = 0; % citac iteraci | i = 0; % citac iteraci | ||
while dx > 0.1 & dy > 0.1 | while dx > 0.1 & dy > 0.1 | ||
i = i+1 | |||
dx = dx/2 | |||
dy = dy/5 | |||
end | end | ||
% totez | % totez | ||
dx = 10; % pozadovana presnost v souradnici x | dx = 10; % pozadovana presnost v souradnici x | ||
dy = 10; % pozadovana presnost v souradnici y | dy = 10; % pozadovana presnost v souradnici y | ||
i = 0; % citac iteraci | i = 0; % citac iteraci | ||
while all([dx > 0.1, dy > 0.1]) % totez: while [dx > 0.1, dy > 0.1] | while all([dx > 0.1, dy > 0.1]) % totez: while [dx > 0.1, dy > 0.1] | ||
i = i+1 | |||
dx = dx/2 | |||
dy = dy/5 | |||
end | end | ||
</source> | </source> | ||
Řádek 40: | Řádek 40: | ||
<source lang=octave> | <source lang=octave> | ||
% iterativni proces skonci az po splneni vsech pozadovanych presnosti | % iterativni proces skonci az po splneni vsech pozadovanych presnosti | ||
dx = 10; % pozadovana presnost v souradnici x | dx = 10; % pozadovana presnost v souradnici x | ||
dy = 10; % pozadovana presnost v souradnici y | dy = 10; % pozadovana presnost v souradnici y | ||
i = 0; % citac iteraci | i = 0; % citac iteraci | ||
while dx > 0.1 | dy > 0.1 | while dx > 0.1 | dy > 0.1 | ||
i = i+1 | |||
dx = dx/2 | |||
dy = dy/5 | |||
end | end | ||
% totez | % totez | ||
dx = 10; % pozadovana presnost v souradnici x | dx = 10; % pozadovana presnost v souradnici x | ||
dy = 10; % pozadovana presnost v souradnici y | dy = 10; % pozadovana presnost v souradnici y | ||
i = 0; % citac iteraci | i = 0; % citac iteraci | ||
while any([dx > 0.1, dy > 0.1]) | while any([dx > 0.1, dy > 0.1]) | ||
i = i+1 | |||
dx = dx/2 | |||
dy = dy/5 | |||
end | end | ||
</source> | </source> | ||
Řádek 91: | Řádek 91: | ||
<source lang=octave> | <source lang=octave> | ||
function [min_x, max_x, mean_x] = stat(x) | function [min_x, max_x, mean_x] = stat(x) | ||
% vypocet minimalni, maximalni a prumerne hodnoty matice | % vypocet minimalni, maximalni a prumerne hodnoty matice | ||
if any(imag(x)) > 0 | |||
error('stat: Vstupni matice obsahuje imaginarni cisla.') | |||
end | |||
min_x = min(min(x)); | |||
max_x = max(max(x)); | |||
mean_x = mean(x(:)); | |||
end | end | ||
</source> | </source> | ||
Vyvolání nápovědy k uživatelské funkci | '''Vyvolání nápovědy k uživatelské funkci''' | ||
<source lang=octave> | <source lang=octave> | ||
help stat | help stat | ||
</source> | </source> | ||
Volání funkce (chybná vstupní data) | '''Volání funkce (chybná vstupní data)''' | ||
<source lang=octave> | <source lang=octave> | ||
data1 = [data; 5+2i; 4-3i] | data1 = [data; 5+2i; 4-3i] | ||
[mi, ma, mn] = stat(data1) | [mi, ma, mn] = stat(data1) | ||
</source> | </source> | ||
Verze z 26. 3. 2017, 05:25
Podmínky a cykly, uživatelské funkce
Náplň cvičení
- složené podmínky
- uživatelské funkce
- chybová hlášení, nápověda k funkci
Ukázky
Složené podmínky
logické AND - všechny podmínky musí platit současně
% iterativni proces skonci jiz pri splneni jedne z pozadovanych presnosti
dx = 10; % pozadovana presnost v souradnici x
dy = 10; % pozadovana presnost v souradnici y
i = 0; % citac iteraci
while dx > 0.1 & dy > 0.1
i = i+1
dx = dx/2
dy = dy/5
end
% totez
dx = 10; % pozadovana presnost v souradnici x
dy = 10; % pozadovana presnost v souradnici y
i = 0; % citac iteraci
while all([dx > 0.1, dy > 0.1]) % totez: while [dx > 0.1, dy > 0.1]
i = i+1
dx = dx/2
dy = dy/5
end
logické OR - musí platit alespoň jedna podmínka
% iterativni proces skonci az po splneni vsech pozadovanych presnosti
dx = 10; % pozadovana presnost v souradnici x
dy = 10; % pozadovana presnost v souradnici y
i = 0; % citac iteraci
while dx > 0.1 | dy > 0.1
i = i+1
dx = dx/2
dy = dy/5
end
% totez
dx = 10; % pozadovana presnost v souradnici x
dy = 10; % pozadovana presnost v souradnici y
i = 0; % citac iteraci
while any([dx > 0.1, dy > 0.1])
i = i+1
dx = dx/2
dy = dy/5
end
Uživatelské funkce
Syntax
function [vystup1,vystup2,...,vystupn] = nazev(vstup1,vstup2,...,vstupn) end % end neni povinne
Každá funkce musí být uložena ve vlastním souboru s příponou .m. Název souboru musí odpovídat názvu funkce! Klíčové slovo function musí být na prvním řádku souboru.
function [min_x, max_x, mean_x] = stat(x)
min_x = min(min(x));
max_x = max(max(x));
mean_x = mean(x(:));
end
Příklad volání
data = rand(5)
[mi, ma, mn] = stat(data)
fprintf('min = %.3f\nmax = %.3f\nmean = %.3f\n', mi, ma, mn)
Chybová hlášení, nápověda
function [min_x, max_x, mean_x] = stat(x)
% vypocet minimalni, maximalni a prumerne hodnoty matice
if any(imag(x)) > 0
error('stat: Vstupni matice obsahuje imaginarni cisla.')
end
min_x = min(min(x));
max_x = max(max(x));
mean_x = mean(x(:));
end
Vyvolání nápovědy k uživatelské funkci
help stat
Volání funkce (chybná vstupní data)
data1 = [data; 5+2i; 4-3i]
[mi, ma, mn] = stat(data1)
Příkaz return
- je-li v běhu funkce vykonán příkaz return, je okamžitě činnost funkce ukončena (bez vykonání evtl.dalších příkazů) a na pozici jejího volání jsou vráceny aktuálně vypočtené hodnoty výstupních parametrů funkce