abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
dnes 15:00 | Pozvánky

Sdružení CESNET ve spolupráci se společností Trend Micro spustilo registraci do hackerské soutěže The Catch 2018. Soutěž proběhne stejně jako vloni v rámci Měsíce kybernetické bezpečnosti.

Ladislav Hagara | Komentářů: 0
dnes 10:33 | Nová verze

Po pěti měsících vývoje od vydání verze 1.15 byla vydána (YouTube) nová major verze 2.0 (2.0.1309.29) webového prohlížeče Vivaldi (Wikipedie). Přináší především synchronizaci uživatelských dat. Novinkou jsou také plovoucí panely. Dále je vylepšena přizpůsobitelnost nebo i práce s listy. Nejnovější Vivaldi je postaveno na Chromiu 69.0.3497.102.

Ladislav Hagara | Komentářů: 0
včera 23:33 | Nová verze

Opera 56, verze 56.0.3051.31, byla prohlášena za stabilní. Z novinek vývojáři upozorňují například na vylepšenou funkci vyskakovacích videí - v plovoucím rámci lze nově nastavovat hlasitost. Podrobný přehled změn v Changelogu. Přehled novinek pro vývojáře na blogu Dev.Opera. Opera 56 je postavena na Chromiu 69.

Ladislav Hagara | Komentářů: 8
včera 21:55 | Nová verze

Společnost Oracle oficiálně oznámila vydání Java SE 11 (JDK 11). Jedná se o verzi s prodlouženou podporou (LTS). Nových vlastností (JEP - JDK Enhancement Proposal) je 17. Nové verze Java SE vychází každých 6 měsíců.

Ladislav Hagara | Komentářů: 0
včera 18:44 | Nová verze

Byla vydána (en) betaverze Fedory 29. Jedná se o poslední zastávku před finálním vydáním a vzhledem k tomu, že byla zrušena alfa, tak také o první. K dispozici je v oficiálních edicích Workstation, Server a Atomic a také v podobě spinů, labů a verze pro ARM. Vydání Fedory 29 je plánováno na 30. října.

Ladislav Hagara | Komentářů: 0
včera 11:44 | Komunita

Aktuální verzi knihy Everything curl věnované řádkovému nástroji a knihovně pro přenos dat po různých protokolech curl lze koupit v papírové formě. Kniha je volně k dispozici na stránkách curlu nebo ke stažení ve formátech PDF, MOBI a EPUB. Ve spolupráci s BountyGraph byl spuštěn bug bounty program aneb za nalezení kritické bezpečnostní chyby v curlu lze vydělat aktuálně až 33 268 dolarů. Částkou 32 768 dolarů přispěl Dropbox. Curl již umí TLS

… více »
Ladislav Hagara | Komentářů: 0
včera 11:33 | Zajímavý projekt

Cloudflare spustil experimentální provoz ESNI - šifrovaného SNI (Server Name Indication), které umožňuje chránit soukromí uživatelů přistupujících k webům přes HTTPS. ESNI je podporováno zatím v testovací verzi Firefoxu. Při současném použití šifrovaného DNS (DNS-over-TLS či DNS-over-HTTPS) tak ISP či státy již nebudou mít žádnou přesnou možnost, jak kontrolovat či blokovat stránky, ke kterým uživatelé přistupují. Více viz také IETF draft.

xm | Komentářů: 0
24.9. 21:33 | Nová verze

Byla vydána nová major verze 1.8.0 open source systému pro filtrování nevyžádané pošty Rspamd (GitHub, ChangeLog). Z novinek lze zmínit nový framework selectors, optimalizaci modulu ClickHouse nebo vylepšení webového rozhraní.

Ladislav Hagara | Komentářů: 2
24.9. 18:44 | Bezpečnostní upozornění

Sabri Haddouche vytvořil stránku Browser Reaper, na které demonstruje zranitelnosti současných verzí webových prohlížečů Chrome, Safari i Firefox. Zveřejněné skripty dokážou zahltit nejen webové prohlížeče, ale v závislosti na nastavení, také celé operační systémy.

Ladislav Hagara | Komentářů: 13
23.9. 19:22 | Nová verze

Byla vydána verze 11.3 open source alternativy GitHubu, tj. softwarového nástroje s webovým rozhraním umožňujícího spolupráci na zdrojových kódech, GitLab (Wikipedie). Představení nových vlastností i s náhledy v příspěvku na blogu.

Ladislav Hagara | Komentářů: 0
Na optické médium (CD, DVD, BD aj.) jsem naposledy vypaloval(a) data před méně než
 (14%)
 (14%)
 (20%)
 (24%)
 (24%)
 (4%)
 (0%)
Celkem 418 hlasů
 Komentářů: 35, poslední včera 09:16
Rozcestník

Octave - 3 (přístup k jednotlivým položkám matice)

1. 2. 2006 | Jiří Poláček | Programování | 7718×

Naplnění matice funkcí, rozměry matice, operátor dvojtečka, přístup k jednotlivým složkám vektoru a matice.

Naplnění matice funkcí

V minulém díle (Octave - 2 (počítání s maticemi)) jsme si ukázali vytvoření matice ručně - výčtem hodnot. Matici můžeme získat i jinak - Octave disponuje celou řadou funkcí pro tvorbu matic určitého typu. S výjimkou permutace mají všechny níže uvedené funkce dva parametry, kterými říkáme, kolik řádků a kolik sloupců má výsledná matice mít (vhodnými parametry jsou tedy pouze kladná čísla). Pokud uvedeme pouze jeden parametr, výsledná matice bude čtvercová. Funkce jsou tedy následující:

  • zeros - vytvoří matici se samými nulami
  • ones - vytvoří matici se samými jedničkami
  • eye - vytvoří jednotkovou matici
  • rand, randn - vytvoří matici s náhodnými čísly v intervalu od nuly do jedné (rovnoměrné nebo normální rozložení)
  • randperm(n) - vytvoří vektor s čísly od 1 do n, náhodně permutovaný
  • tril, triu - podle hlavní diagonály extrahuje dolní, respektive horní trojúhelníkovou matici ze zadané matice. Druhý volitelný parametr posouvá dělící diagonálu.

Příklady pro představu:

>> zeros(2,4)
ans =
  0  0  0  0
  0  0  0  0
>> 4 * ones(2,3)
ans =
  4  4  4
  4  4  4
>> eye(3)
ans =
  1  0  0
  0  1  0
  0  0  1
>> randn(2,5)
ans =
   1.324077  -0.408510   1.516083  -0.372057  -0.138184
   0.787720  -0.186652   0.079070   0.056826   1.679005
>> floor(rand(4,6)*20)+1 % Chceme celá čísla od 1 do 20
ans =
   3  10   2   6   5  16
   6   4  10   8  19   9
  18  20   1  18  13   8
  17   8  13   7  12  20
>> randperm(8)
ans =
  4  6  5  7  2  8  3  1
>> tril(ones(3))
ans =
  1  0  0
  1  1  0
  1  1  1
>> triu(ones(5),-2)
ans =
  1  1  1  1  1
  1  1  1  1  1
  1  1  1  1  1
  0  1  1  1  1
  0  0  1  1  1

Octave také obsahuje funkce pro výrobu speciálních matic, jakými jsou například Hankelova, Hilbertova, Sylvesterova či Toeplitzova matice. Popis parametrů je v nápovědě.

Rozměry matice

Funkce size s parametrem nějaké matice vrací dvouprvkový vektor, ve kterém první hodnota odpovídá počtu řádků dané matice a druhá počtu sloupců:

>> size(ones(5))
ans =
  5  5

Funkce rows a columns vrací pouze odpovídající složku z dvouprvkového výsledku funkce size, tj. počet řádků, respektive počet sloupců z dané matice:

>> rows([1:5]')
ans = 5
>> columns(zeros(4,60))
ans = 60

Počet řádků a počet sloupců nějaké matice tedy lze do proměnných uložit dvěma následujícími ekvivalentními způsoby:

>> Matice=zeros(5,20);
>> [radky, sloupce]=size(Matice)
radky = 5
sloupce = 20
>> radky=rows(Matice), sloupce=columns(Matice)
radky = 5
sloupce = 20

Funkce length vrací větší z hodnot vrácených funkcí size, typicky se používá pro výpočet počtu prvků v nějakém vektoru, přičemž se nemusíme starat o to, zda je tento vektor řádkový či sloupcový:

>> length([1 2 3 8])
ans = 4

Operátor dvojtečka

Znak dvojtečka slouží k zhuštěnému zápisu řádkového vektoru obsahujícího nějakou aritmetickou posloupnost. Obecně v zápisu figurují tři čísla oddělená dvojtečkami. První z nich představuje počáteční člen posloupnosti, druhé velikost kroku a třetí poslední přípustný člen řady. Více to bude patrno z příkladů:

>> 1:1:6
ans =
  1  2  3  4  5  6

Posloupnost čísel od jedné do šesti s krokem jedna:

>> 1.5:2.5:7.9
ans =
  1.5000  4.0000  6.5000

Následující potenciální člen posloupnosti 6,5 + 2,5 = 9 již je číslo větší jak nejvyšší přípustný člen posloupnosti, tj. číslo 7,9, proto již v posloupnosti obsažen není. Všimněme si, že v zápisu samozřejmě lze pracovat s reálnými čísly, nejenom s celými.

>> 5:-1:-1
ans =
   5   4   3   2   1   0  -1
>> 0:8
ans =
  0  1  2  3  4  5  6  7  8

V případě, že není krok uveden - zápis sestává pouze ze dvou čísel oddělených jednou dvojtečkou - považuje se za krok hodnota 1. Zápis posloupnosti s dvojtečkovou notací se používá zejména při indexovaném přístupu k obsahu matic, lze tak snadno vybrat například druhý až jedenáctý řádek dané matice. Více viz následující odstavce.

Přístup k jednotlivým složkám vektoru

Nezřídka se může stát, že při výpočtu je potřeba pracovat pouze s určitými prvky nějakého vektoru či matice, nikoliv s celým obsahem proměnné najednou. V kulatých závorkách uvedených bezprostředně za názvem proměnné lze uvést index prvku, s kterým se má pracovat:

>> X=5:-1:-4
X =
   5   4   3   2   1   0  -1  -2  -3  -4
>> X(1)
ans = 5
>> X(4)
ans = 2
>> X(end)
ans = -4

Zadáním jednoho čísla se odkazujeme na pozici v daném vektoru. Pozice se číslují od jedničky, na poslední pozici se lze odvolat pomocí klíčového slůvka end. Jedním výběrem však pozic můžeme vybrat více - výsledkem je „podvektor“ složený z prvků vybraných z původního vektoru v uvedeném pořadí:

>> X(3:7)
ans =
   3   2   1   0  -1
>> X(end:-2:1)
ans =
  -4  -2   0   2   4
>> X([8,5,7,1])
ans =
  -2   1  -1   5
>> X([9,9,9,1,1])
ans =
  -3  -3  -3   5   5

Poslední uvedený příklad ukazuje, že není problémem vybrat prvek na zvolené pozici vícekrát - při budování výsledného vektoru se právě tolikrát a právě v takovém pořadí vybrané prvky objeví. Za povšimnutí stojí též fakt, že zadání více pozic je nutno zapsat jako vektor těchto pozic (tj. v hranatých závorkách), na úrovni kulatých závorek lze totiž u vektoru zadat pouze jeden parametr indexování.

Přístup k jednotlivým složkám matice

Přístup k prvkům matice analogicky odpovídá přístupu ke složkám vektoru s tím rozdílem, že je nutno zadat indexy dva - řádkový a sloupcový oddělené čárkou (no, není to tak úplně pravda, ale to se ukáže až později):

>> M=fix(rand(5)*21)-10;

% Vyber prvek z druhého řádku a čtvrtého sloupce
>> M(2,4)
ans = -9

% Vyber první-až-třetí řádek průnik třetí-až-pátý sloupec
>> M(1:3,3:5)
ans =
    0    7   10
   10   -9   -5
   -2   -8   -1

% Vyber postupně pátý, třetí a první řádek skrze všechny sloupce
>> M([5,3,1],:)
ans =
   -5    5   -1   -5   -2
    5   -7   -2   -8   -1
   -8   -2    0    7   10

V případě, kdy chce uživatel vybrat všechny řádky respektive všechny sloupce, stačí na místě příslušného indexu uvést pouze znak „:“ namísto ekvivalentního 1:end.

Výběr určitých prvků z matice lze činit také proto, abychom tyto prvky nahradili jinými hodnotami. Oblast výběru svými rozměry musí vždy odpovídat rozměrům vkládané matice:

>> M(1,2)=-4
>> M(1,:)=M(3,:)
>> M([2,4],[2,4])=ones(2)
>> M(:,2)=[]

První příkaz nahradil prvek v prvním řádku a druhém sloupci hodnotou -4; druhý zkopíroval třetí řádek na první řádek; třetí nahradil prvky v matici ve druhém a čtvrtém řádku i sloupci jedničkami; poslední pak smazal druhý sloupec - mazání se provádí vložením prázdné matice (viz minulý díl). Aby byla zachována konzistence matice, je nutno mazat vždy celé řádky či sloupce.

Příště

Příští díl se bude věnovat relačním a logickým operátorům v Octave.

Nejčtenější články posledního měsíce

Jak ušetřit za ukládání dat? Zkuste housing a servery od Czech-Server.cz
Microsoft Office 2016 Professional Plus za méně než 570 korun!
Jaderné noviny – 30. 8. 2018: Druhá polovina začleňovacího okna 4.19

Nejkomentovanější články posledního měsíce

Jaderné noviny – 16. 8. 2018: Jak je důležité míti šum
Jaderné noviny – 30. 8. 2018: Druhá polovina začleňovacího okna 4.19
Týden na ITBiz: Virtuální realita pro podniky
  všechny statistiky »

Seriál Octave (dílů: 16)

Octave - 1 (je to kalkulačka) (první díl)
<—« Octave - 2 (počítání s maticemi)
»—> Octave - 4 (je to pravda?)
Octave - 16 (a co dál?) (poslední díl)

Související články

Octave - 1 (je to kalkulačka)
Octave - 2 (počítání s maticemi)
Octave - 4 (je to pravda?)
Octave - 5 (práce s řetězci)
Octave - 6 (práce se soubory)
Octave - 7 (vlastní skripty a funkce)
Octave - 8 (větvení programu)
Octave - 9 (cykly)
Octave - 10 (zbylé řídicí struktury)
Octave - 11 (kreslíme grafy)
Octave - 12 (měřítko os a speciální grafy)
Octave - 13 (dokončení grafiky)
Octave - 14 (finance a statistika)
Octave - 15 (špetka matematiky)
Octave - 16 (a co dál?)
Vektorový elegán Ipe
Recenze: Kniha kódů a šifer
Awk & sed: Příručka pro dávkové zpracování textu
SETI@home
Jak se píše procesor
GnuCash - domácí účetnictví na úrovni
Použití gnuplot pro tvorbu grafů v PHP
Hra s písmenky - wxMaxima

Odkazy a zdroje

Octave

Další články z této rubriky

LLVM a Clang – více než dobrá náhrada za GCC
Ze 4 s na 0,9 s – programovací jazyk Vala v praxi
Reverzujeme ovladače pro USB HID zařízení
Linux: systémové volání splice()
Programování v jazyce Vala - základní prvky jazyka
       

Hodnocení: 100 %

        špatnédobré        

Nástroje: Tisk bez diskuse

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Vložit další komentář

1.2.2006 10:45 herhor
Rozbalit Rozbalit vše Re: Octave - 3 (přístup k jednotlivým položkám matice)
Já jsem tedy jednoznačně proti tomu, aby tady vycházely tutoriály pro idioty. Uvod do Octave pro nezasvěcené má vypadat nějak takhle http://www.root.cz/clanky/octave-programovaci-jazyk-pro-neprogramatory/. Pro koho je určené tohle vážně nechápu.
1.2.2006 11:04 Robert Krátký | skóre: 94 | blog: Robertův bloček
Rozbalit Rozbalit vše Re: Octave - 3 (přístup k jednotlivým položkám matice)
Každý někdy začínal. Připadá-li ti článek příliš podrobný nebo jednoduchý, nelze poradit nic jiného, než abys ho nečetl. Nikdo tě nenutí. Buď ale tolerantní a ponech ho nám ostatním.
1.2.2006 12:21 coccyx
Rozbalit Rozbalit vše Re: Octave - 3 (přístup k jednotlivým položkám matice)
mne sa tento serial celkom paci a urcite si nemyslim ze dobry clanok by mal byt suhrn linkov na manual programu. A celkom by som bol rad keby po dokonceni serialu vysla aj nejaka kompaktna PDF verzia.
1.2.2006 12:42 Robert Krátký | skóre: 94 | blog: Robertův bloček
Rozbalit Rozbalit vše Re: Octave - 3 (přístup k jednotlivým položkám matice)
Po dokončení bude celý seriál v jednom z vydání PDF Abíčka.
1.2.2006 12:42 jam001 | skóre: 19
Rozbalit Rozbalit vše Re: Octave - 3 (přístup k jednotlivým položkám matice)
Nieco taketo nestaci? http://www.octave.org/doc/index.html
menphis avatar 1.2.2006 12:45 menphis | skóre: 22 | blog: menphis_blog
Rozbalit Rozbalit vše Re: Octave - 3 (přístup k jednotlivým položkám matice)
Jj, taky si myslim,ze by clanek mohl byt trochu odborneji pojat. Na 3. dil je prace s prvky hodne malo!
1.2.2006 12:25 coccyx
Rozbalit Rozbalit vše dlhy vypis
by som sa chcel spytat ako sa da vypnut funkcia, ktora umoznuje prezeranienie vypisu dlhych vysledkov, mi to pripada ako prikaz more ale ked mam program v skripte mi vadi ze program zastavuje na tomto vypise.
1.2.2006 13:16 jam001 | skóre: 19
Rozbalit Rozbalit vše Re: dlhy vypis
Bohuzial nerozumiem tvojej otazke (vlastne tam ani ziadna otazka nie je).

Nepomoze ti ';' na konci kazdeho prikazu? To sposobi, ze vysledok prikazu nie je vypisany.
1.2.2006 14:26 coccyx
Rozbalit Rozbalit vše Re: dlhy vypis
no praveze ja som chcel ten vysledok vidiet, len aby sa to nezastavovalo na tom vypise, napriklad v koctave si mozem vyskrolovat vsetky vysledky ...

riesenie: page_screen_output=0

-- Built-in Variable: page_screen_output If the value of `page_screen_output' is nonzero, all output intended for the screen that is longer than one page is sent through a pager. This allows you to view one screenful at a time. Some pagers (such as `less'--see *Note Installation::) are also capable of moving backward on the output. The default value is 1.
1.2.2006 22:23 GeBu | skóre: 27 | blog: zápisky
Rozbalit Rozbalit vše Re: Octave - 3 (přístup k jednotlivým položkám matice)
Nevíte někdo jestli neexistuje manuál v češtině?

Založit nové vláknoNahoru

ISSN 1214-1267   www.czech-server.cz
© 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.