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 19:44 | Zajímavý software

    Společnost Kagi stojící za stejnojmenným placeným vyhledávačem vydala (𝕏) alfa verzi linuxové verze (flatpak) svého proprietárního webového prohlížeče Orion.

    Ladislav Hagara | Komentářů: 1
    dnes 19:11 | IT novinky

    Firma Bose se po tlaku uživatelů rozhodla, že otevře API svých chytrých reproduktorů SoundTouch, což umožní pokračovat v jejich používání i po plánovaném ukončení podpory v letošním roce. Pro ovládání také bude stále možné využívat oficiální aplikaci, ale už pouze lokálně bez cloudových služeb. Dokumentace API dostupná zde (soubor PDF).

    NUKE GAZA! 🎆 | Komentářů: 0
    dnes 14:22 | Zajímavý článek

    Jiří Eischmann se v příspěvku na svém blogu rozepsal o open source AdGuard Home jako domácí ochraně nejen před reklamou. Adguard Home není plnohodnotným DNS resolverem, funguje jako DNS forwarder s možností filtrování. To znamená, že když přijme DNS dotaz, sám na něj neodpoví, ale přepošle ho na vybraný DNS server a odpovědi zpracovává a filtruje dle nastavených pravidel a následně posílá zpět klientům. Dá se tedy používat k blokování reklamy a škodlivých stránek a k rodičovské kontrole na úrovni DNS.

    Ladislav Hagara | Komentářů: 4
    dnes 03:33 | Zajímavý software

    AI Claude Code od Anthropicu lépe rozumí frameworku Nette, tj. open source frameworku pro tvorbu webových aplikací v PHP. David Grudl napsal plugin Nette pro Claude Code.

    Ladislav Hagara | Komentářů: 1
    dnes 00:11 | Nová verze

    Byla vydána prosincová aktualizace aneb nová verze 1.108 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a videi v poznámkách k vydání. Ve verzi 1.108 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.

    Ladislav Hagara | Komentářů: 0
    včera 20:44 | IT novinky

    Na lasvegaském veletrhu elektroniky CES byl předveden prototyp notebooku chlazeného pomocí plazmových aktuátorů (DBD). Ačkoliv se nejedná o první nápad svého druhu, nepochybně to je první ukázka praktického použití tohoto způsobu chlazení v běžné elektronice. Co činí plazmové chladící akční členy technologickou výzvou je především vysoká produkce jedovatého ozonu, tu se prý podařilo firmě YPlasma zredukovat dielektrickou

    … více »
    NUKE GAZA! 🎆 | Komentářů: 8
    včera 16:33 | Zajímavý projekt

    Patchouli je open source implementace EMR grafického tabletu (polohovací zařízení). Projekt je hostován na GitLabu.

    Ladislav Hagara | Komentářů: 0
    včera 14:11 | IT novinky

    Český Nejvyšší soud potvrdil, že česká právní úprava plošného uchování dat o elektronické komunikaci porušuje právo Evropské unie. Pravomocným rozsudkem zamítl dovolání ministerstva průmyslu a obchodu. To se teď musí omluvit novináři Českého rozhlasu Janu Cibulkovi za zásah do práv na ochranu soukromí a osobních údajů. Ve sporu jde o povinnost provozovatelů sítí uchovávat údaje, ze kterých lze odvodit, kdo, s kým a odkud komunikoval.

    Ladislav Hagara | Komentářů: 15
    včera 02:11 | Komunita

    Google bude vydávat zdrojové kódy Androidu pouze dvakrát ročně. Ve 2. a 4. čtvrtletí.

    Ladislav Hagara | Komentářů: 1
    7.1. 17:22 | Zajímavý článek

    Bezpečnostní specialista Graham Helton z Low Orbit Security si všímá podezřelých anomálií v BGP, zaznamenaných krátce před vstupem ozbrojených sil USA na území Venezuely, které tam během bleskové speciální vojenské operace úspěšně zatkly venezuelského diktátora Madura za narkoterorismus. BGP (Border Gateway Protocol) je 'dynamický směrovací protokol, který umožňuje routerům automaticky reagovat na změny topologie počítačové sítě' a je v bezpečnostních kruzích znám jako 'notoricky nezabezpečený'.

    NUKE GAZA! 🎆 | Komentářů: 12
    Které desktopové prostředí na Linuxu používáte?
     (2%)
     (4%)
     (0%)
     (9%)
     (21%)
     (4%)
     (5%)
     (3%)
     (11%)
     (54%)
    Celkem 313 hlasů
     Komentářů: 7, poslední včera 15:35
    Rozcestník
    Štítky: není přiřazen žádný štítek

    Octave - 2 (počítání s maticemi)

    23. 1. 2006 | Jiří Poláček | Programování | 15883×

    Historie a vyhodnocování příkazů, základní maticové operace, skaláry.

    V hned druhém pokračování povídání o systému Octave vyjde najevo, proč Matlab získal své jméno jako zkratku z MATrix LABoratory - laboratoř pro práci s maticemi. Než se však vrhneme na násobení matic, povíme si pár slov k historii příkazů a jejich vyhodnocování.

    Historie příkazů

    Asi nepřekvapí, ale určitě ani nezarmoutí fakt, že Octave disponuje vestavěnou historií příkazů - pomocí kurzorových šipek nahoru a dolů lze listovat seznamem dříve zadaných příkazů, které lze editovat a opravené nechat spočítat znovu. V linuxových verzích Octave lze také zpětně hledat v historii příkazů přes klávesové zkratky Ctrl-R a Ctrl-S:

    >>
    (reverse-i-search)`sin': (sin(x))^2

    Více příkazů najednou, komentáře

    V Octave je možné zapsat a nechat vyhodnotit více výrazů najednou - píšeme je za sebe na řádek, přičemž v úvahu přichází dva oddělovače, čárka a středník:

    >> A=1+1, B=3*4; C=8/4
    A = 2
    C = 2
    >> B
    B = 12

    V obou případech se výraz vyhodnotí, avšak pouze při ukončení čárkou se též vypíše výsledek. Neuvedení oddělovače za posledním příkazem na řádce je ekvivalentní se zakončení výrazu čárkou, tj. výsledek se vypíše. Skutečnost, že se v příkladě provedl i příkaz ukončený středníkem, dokazuje výraz, kdy jsme si nechali vypsat obsah proměnné B. Středníkem ukončujeme zejména příkazy v programech, které vrací „nezajímavé“ mezivýsledky výpočtu. Chceme-li zapsat výraz či více výrazů na více řádků, můžeme s úspěchem použít znak zpětné lomítko „\“ následovaný znakem nový řádek (tj. stisknutí klávesy Enter) - v zápisu příkazu pokračujeme na dalším řádku:

    >> 1 + \
    > 2 \
    > + 3
    ans = 6

    Speciální význam v Octave má také znak procento „%“. Uvozuje komentář - jinými slovy vše, co bude zapsáno za tímto znakem na stejném řádku, Octave ignoruje. Komentáře slouží zejména k lepší orientaci v programech uživatelem:

    >> c=(a^2 + b^2)^(1/2) % Zde využíváme Pythagorovy věty

    Proměnné jako matice

    Pro výpis uživatelem vytvořených proměnných lze kromě příkazu who použít také příkaz whos, který vrací podrobnější informace:

    >> whos
           prot    type    rows   cols  name
           ====    ====    ====   ====  ====
           rwd     scalar    1     1     P
           rwd     scalar    1     1     p

    Pro nás jsou teď zajímavé sloupce rows a cols udávající počet řádků a sloupců proměnné. Jak již bylo naznačeno v úvodu, Octave podle vzoru Matlabu chápe každou proměnnou jako matici určité velikosti. Proměnné obsahující jedno číslo jsou tak brány jako matice velikosti 1×1 - s těmi se však počítá úplně stejně jako s normálními čísly. Pokud budeme chtít pracovat s maticemi o větším počtu řádků či sloupců, přijdou na řadu hranaté závorky:

    >>M=[0 1 2;1,2,3
    > 4 5,6]
    M =
      0  1  2
      1  2  3
      4  5  6

    Při takovémto zadávání matice na příkazové řádce hranaté závorky vymezují prostor pro zápis jejího obsahu, hodnoty na řádku se oddělují mezerou nebo čárkou, řádky pak středníkem nebo novým řádkem (klávesou Enter - do výskytu uzavírající závorky Octave výraz nevyhodnocuje).

    Matici lze skládat také z „větších“ objektů, než jsou skaláry, tj. z vektorů a menších matic. Při zadávání je pouze nutno dbát na to, aby ve výsledku měla matice stejný počet sloupců v každém řádku, tj. aby někde něco nechybělo či nepřebývalo:

    >> N=[1 2;3] error: number of columns must match (1 != 2)

    Nyní složme velkou matici ze tří menších objektů:

    >> A=[1 2; 3 4; 5 6], B=[-1 -3; 9 9], V=[0, 50]
    A =
      1  2
      3  4
      5  6
    B =
      -1  -3
       9   9
    V =
       0  50
    >> VelkaMatice = [A, [B; V]]
    VelkaMatice =
        1    2   -1   -3
        3    4    9    9
        5    6    0   50

    Z podstaty věci je možné (a formálně korektnější) psát i samostatná čísla v maticových závorkách:

    >> [6]*[10]
    ans = 60

    Pro přehlednost a úsporu psaní si je však každý rád odpustí, jak tomu je v ostatních příkladech v tomto textu. Je také možné vytvořit - na první pohled poněkud překvapivě - prázdnou matici, která má nulový počet řádků a sloupců:

    >> N=[]
    N = [](0x0)

    Prázdné matice mají své uplatnění při rušení řádků či sloupců ve větších maticích, viz dále.

    Základní maticové operace

    Podle očekávání Octave umí s maticemi nativně provádět běžné numerické operace, tj. zejména velikostně si odpovídající matice sčítat, respektive odčítat a násobit:

    >> [1 2;-3 -2] + [-1,-3;4,3]
    ans =
       0  -1
       1   1
    >> [4;-2] * [-1,2]
    ans =
      -4   8
       2  -4

    Nechybí ani možnost umocňovat matici reálným číslem; významná je zejména operace umocňování na minus prvou (M-1), kterou získáme matici inverzní k původní matici:

    >> M=[-1 0 2; 4 2 1; -1 -1 -2]; M^-1
    ans =
       3   2   4
      -7  -4  -9
       2   1   2
    >> M * M^-1
    ans =
      1  0  0
      0  1  0
      0  0  1

    K základním maticovým operacím patří také transpozice, tj. přeměna řádků na sloupce a naopak. V Octave ji vyznačujeme apostrofem - „'“:

    >> M'
    ans =
      -1   4  -1
       0   2  -1
       2   1  -2

    Octave také umí matice dělit, a to hned dvěma způsoby: levostranně pomocí operátoru „\“ a pravostranně pomocí „/“. Formálně to u čtvercových regulárních matic odpovídá násobení jedné matice s druhou inverzní, tj. A\B ≈ A-1·B a A/B ≈ A·B-1. Jelikož výpočet probíhá přímo, je možné levostranně dělit matice se stejným počtem řádků a pravostranně matice se stejným počtem sloupců:

    >> [-1 -4 0; 2 -3 1] \ [2 3; -1 -1]
    ans =
      -0.81159  -1.05797
      -0.29710  -0.48551
      -0.26812  -0.34058
    >> [-1 -4; 2 -3 ] / [2 3; -1 -1; 6 -7]
    ans =
      -0.833333   0.333333   0.166667
      -0.111390   0.033501   0.376047

    Dělení matic se využívá například při řešení soustavy lineárních rovnic. Pro názornost dodejme ještě, že levostranné dělení běžných čísel odpovídá zápisu zlomku, kdy nejdřív uvedeme jmenovatele a teprve poté čitatele:

    >> 5 \ 35
    ans = 7

    Pozor na to, že znak zpětné lomítko se také používá pro zápis výrazu/výrazů na vícero řádků, jak již bylo uvedeno dříve.

    Matice a skalár, operace po prvcích

    Podle očekávání se také Octave chová při operacích s maticemi a skaláry - operace se provede se skalárem a s každým prvkem matice, výsledkem je matice stejných rozměrů. Například násobení matice skalárem a součet matice a skaláru:

    >> 2 * [1,2;-2,4]
    ans =
       2   4
      -4   8
    >> [1,2;-2,4] + 4
    ans =
      5  6
      2  8

    Někdy je zapotřebí u násobení matic provést tuto operaci tzv. po prvcích, tj. stejným způsobem, jak se provádí součet matic. Násobit po prvcích je možno pouze matice se stejným počtem řádků a sloupců a výsledek je opět stejně rozměrná matice s odpovídajícími výsledky na daných pozicích. Násobení po prvcích dáme najevo předřazením symbolu tečka před vlastní symbol násobení - hvězdičku:

    >> [1 -1; 2 3] .* [7 5; 1 -1]
    ans =
       7  -5
       2  -3

    Porovnejte s výsledkem standardního násobení matic:

    >> [1 -1; 2 3] * [7 5; 1 -1]
    ans =
       6   6
      17   7

    Analogickým způsobem lze pomocí tečky před vlastním operátorem zařídit též dělení a umocňování po prvcích. Tečku lze zapsat i před sčítání a odečítání, z praktického hlediska to ale nemá význam - tyto operace se provádí pouze v režimu „po prvcích“:

    >> [4 9; 12 -27] ./ [2 3; 6 9]
    ans =
       2   3
       2  -3
    >> [1 -1; 2 3].^3
    ans =
        1   -1
        8   27

    Pro srovnání:

    >> [1 -1; 2 3]^3
    ans =
       -9  -11
       22   13

    Funkce pro práci s maticemi

    Nakonec uveďme pár základních funkcí, které se nám při práci s maticemi mohou hodit:

    • inv - počítá inverzní matici, totéž, co umocnění na -1
    • det - determinant matice
    • rank - hodnost matice
    • rot90 - otáčí matici o 90 stupňů, je-li druhý parametr -1, tak ve směru hodinových ručiček, hodnota 1 znamená proti směru hodinových ručiček:
    >> rot90([1 2; 3 4],-1)
    ans =
      3  1
      4  2
    >> rot90([1 2; 3 4],1)
    ans =
      2  4
      1  3

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

    Týden na ITBiz: Agenti AI přinášejí revoluci do obchodování na trzích
    Událo se v týdnu 50/2025
    Windows 11 Pro jen za €21,80 od Goodoffer24.com!

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

    Týden na ITBiz: Prodejci věří, že AI dokáže vylepšit většinu IT produktů
      všechny statistiky »

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

    Octave - 1 (je to kalkulačka) (první díl)
    <—« Octave - 1 (je to kalkulačka)
    »—> Octave - 3 (přístup k jednotlivým položkám matice)
    Octave - 16 (a co dál?) (poslední díl)

    Související články

    Octave - 1 (je to kalkulačka)
    Octave - 3 (přístup k jednotlivým položkám matice)
    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

    Diskuse byla administrátory uzamčena

    23.1.2006 12:55 Cubic | skóre: 24 | blog: obcasne_vyplody | Essex
    Rozbalit Rozbalit vše Re: Octave - 2 (počítání s maticemi)
    musim pochvalit clanek, sice pro me prisel pozde protoze jsem potreboval matlab minulej rok a kdybych vedel o tomhle tak bych kvuli zapoctu neklesal do moralniho bahna a neistaloval ileg. kopii matlabu, ale stejne je prinosny treba pro budouci generace :)
    23.1.2006 14:06 xvasek | skóre: 21 | blog: | Zlín
    Rozbalit Rozbalit vše Re: Octave - 2 (počítání s maticemi)
    Matlab ve školní licenci umožňuje (snad) používání verze stejné jako ve škole studentům - takžes možná do bahna ilegality nespadnul. :) Teda aspoň já jsem takto licenci řešil, ale teďka už si nevzpomínám jestli u Matlabu nebo Maple a jestli je to generální pardon nebo jestli o to musí škola nějak usilovat nebo něco dokupovat.
    23.1.2006 17:17 Cubic | skóre: 24 | blog: obcasne_vyplody | Essex
    Rozbalit Rozbalit vše Re: Octave - 2 (počítání s maticemi)
    to by musel byt skolni(katedrovy) licencni server dostupny na kolejich :(
    23.1.2006 16:27 Käyttäjä 11133 | skóre: 58 | blog: Ajattelee menneisyyttä
    Rozbalit Rozbalit vše Re: Octave - 2 (počítání s maticemi)
    Poklud vím, tak kámoš používá stejnou verzi matlabu jako mají ve škole legálně. (Na školní licenci)
    24.1.2006 09:42 anicka | blog: ze_zivota
    Rozbalit Rozbalit vše Re: Octave - 2 (počítání s maticemi)
    Zas o tolik jsi nepřišel. Kdykoliv si chci ušetřit práci a spočítat domácí úkol v octave, mám pak chuť si radši dát pár facek, protože vždycky najdu další bug. A protože má práce spočívá mimo jiné i v tom, aby nám octave v distribuci fungovalo, spoustu práce si tím přidělám. Nikdy jsem nemyslela, že se začnu učit Fortran 77, ale bohužel není vyhnutí.

    Pokud jde o práci s maticemi, daleko příjemnější a spolehlivější je PDL, to nefunguje pořádně jenom na PPC.
    ^D
    28.1.2006 20:38 Zdeněk Hurák | skóre: 7
    Rozbalit Rozbalit vše Re: Octave - 2 (počítání s maticemi)
    Myslím, že zase tak hrozná Octave není.

    A že existuje jiný balík, který Ti sedí více, to je přece super. Jen ale k těm novým a jeětě novějším, lepším a ještě lepčejším balíkům musím dodat, že co dnes rozhoduje o tom, zda se balík tohoto typu uchytí mezi běžnými uživateli, je množství externích aplikačních knihoven (toolboxů), a těch má Octave v Octave-forge docela dost (zpracování signálů, obrazu, návrh regulátorů, statistika, ...). Z F&OS projektů snad stojí za zmínku ještě Scilab (i kdyz tam je ta licence podivna) a na statistiku orientované R, a tím to z tohoto pohledu končí, mám dojem.
    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.