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

Z GeoWikiCZ
Skočit na navigaci Skočit na vyhledávání
Řádek 84: Řádek 84:
 
<source lang=octave>
 
<source lang=octave>
 
  data = rand(5)
 
  data = rand(5)
  [mi, ma, mn] = stat(data)
+
  [mi, ma, mn] = stat(data);
 
  fprintf('min  = %.3f\nmax  = %.3f\nmean = %.3f\n', mi, ma, mn)
 
  fprintf('min  = %.3f\nmax  = %.3f\nmean = %.3f\n', mi, ma, mn)
 
</source>
 
</source>

Verze z 29. 3. 2017, 12:42

předchozí cvičenístránky předmětudalší cvičení

Podmínky a cykly, uživatelské funkce

Náplň cvičení

  1. složené podmínky
  2. uživatelské funkce
  3. 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(:));    % stejny vysledek jako mean_x = mean(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(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 * ones(5,1)]
 [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

Úlohy