Octave, průvodce programem

  Hlavní stránka
  Přehled kapitol


  1. Krátké představení Octave   2. Práce s programem
  3. Datové typy
  4. Číselné datové typy
  5. Řetězce
  6. Datové struktury
  7. Datové kontejnery
  8. Proměnné

  9. Výrazy

  9.1 Indexové výrazy
  9.2 Volání funkcí
    Volání hodnotou
    Rekurze
  9.3 Aritmetické operace
  9.4 Relační operace
  9.5 Logické výrazy
    Log. op. prvek-za-prvkem
    Zkratové logické operátory
  9.6 Přiřazovací výrazy
  9.7 Přírustkové výrazy
  9.8 Priorita operátorů

10. Vyhodnocení
11. Příkazy
12. Funkce a skriptovací
      soubory
13. Vstup a výstup
14. Vykreslování
15. Práce s maticemi
16. Aritmetika
17. Lineární algebra
18. Nelineární rovnice
19. Kvadratura
20. Diferenciální rovnice
21. Práce s polynomy
22. Teorie řízení

9.1 Indexové výrazy

Indexové výrazy vám dovolují odkazovat nebo rozbalovat vybrané prvky matice nebo vektoru.

Ukazatelem mohou být skaláry, vektory, rozsah nebo speciální operátory ":", které mohou být použity k výběru konkrétního řádku nebo sloupce.

Vektory jsou indexovány použitím jednoduchého výrazu. Matice mohou být indexovány pomocí jednoho nebo dvou ukazatelů.

Je dána matice:

a = [1, 2; 3, 4]

a všechny tyto následující výrazy jsou rovny jejímu zápisu:

a (1, [1, 2])
a (1, 1:2)
a (1, :)

Indexování skaláru vektorem jedniček může být použito k vytvoření vektoru stejné velikosti jako je indexový vektor, s každým prvkem rovným hodnotě originálního skaláru. Například následující tvrzení:

a = 13;
a ([1, 1, 1, 1])

vytvoří vektor, jehož čtyři prvky jsou všechny rovny 13.

Podobně, indexací skaláru se dvěma vektory jedniček můžeme vytvořit matici. Například následující tvrzení:

a = 13;
a ([1, 1], [1, 1, 1])

vytvoří matici 2x3 se všemi prvky rovnými 13.

Tento zápis je ale nevhodný k používání a měli byste se mu vyhnout. Je mnohem jednodušší pomocí příkazu ones vytvořit matici požadované velikosti se všemi prvky rovnými jedné a pak ji jen rozšířit na požadovaný výsledek.

Poznamenejme, že je celkem neefektivní vytvářet vektory pomocí smyčky, jak je uvedeno v příkladu výše. V tomto případě by bylo lepší použít výrazu:

a = sqrt (1:10);

což cyklus kompletně vynechá. V případech, kde je cyklus stále vyžadován nebo počet hodnot musí být kombinován aby vytvořil větší matici je v podstatě mnohem rychlejší nastavit prvně velikost matice a potom vložit prvky pomocí indexových příkazů. Například daná matice a:

[nr, nc] = size (a);
x = zeros (nr, n * nc);
for i = 1:n
  x(:,(i-1)*nc+1:i*nc) = a;
endfor


Je podstatně rychlejší než:

x = a;
for i = 1:n-1
  x = [x, a];
endfor


Zvláště pro velké matice protože Octave nemusí opakovaně měnit velikost výsledku.

 < 9. Výrazy < > 9.2 Volání funkcí > 
© 2006 Michal Just
info(a)octave.cz
inzerce zdarma
Sport365.cz - squash, tenis, badminton ...