Úvod do programování v Matlabu pro ekology
Semestr: zimní
SIS: zatím není
Celkový rozsah: 1/1
Další přednášející:
Co je potřeba znát před přednáškou: je dobré mít absolvovanou nějakou
přednášku kvantitativní ekologie (třeba Ekologii společenstev, Populační biologii,
Populační biologii rostlin, Biostatistiku nebo něco podobného). Rovněž je vhodné
mít absolvovanou přednášku ze základní matematiky, nic z toho ale není nezbytné.
(Dost taky záleží na tom, k čemu chcete nadále Matlab používat.)
Přednáška chce poskytnout základní techniky pro programování typických ekologických
úloh v prostředí Matlabu. Tyto techniky pak mohou sloužit jak pro porozumění
již existujícím funkcím a jejich úpravám, tak pro psaní vlastních funkcí orientovaných
na specifické problémy. Řada badatelských problémů (v ekologii i jinde) je do
značné míry specifických, takže často je není možné řešit pomocí běžného (natvrdo
udělaného) softwaru, a je třeba si cosi "ukutit" sám. Hlavním cílem
přednášky proto chce být zbavit účastniky obavy z programování a ukázat jim
nástroj, který lze bez další zvláštní průpravy k běžnému programování použít.
Přednáška se řídí heslem "je třeba se učit jen to, co je opravdu potřeba".
Kurs je vítanou přípravou ke kursu Praktikum dynamických
modelů v ekologii.
Kurs má vždy úvodní přednáškovou část a navazující praktickou část v počítačové
učebně. Rovněž očekávám práci na domácích úkolech! Rychlost postupu se budu
snažit přizpůsobit potřebám zájemců.
Ve školním roce 2006/2007 se kurs bude konat, bude mít turnusovou formu.
První setkání bude 12. 1. (celý den). Sraz v 9,00 v lichenoherbářích, notebooky
případně s sebou. Případní další zájemci se prosím hlaste zde!
Zájemci z jiných oddělení a kateder jsou vítáni.
Datum |
Téma |
12.1. |
Domluva o struktuře kursu. Prostředí Matlabu. Prvky jazyka
Matlab. |
12.1. |
Funkce. Přehled základních typů knihovních funkcí. |
???? |
Programování vlastních funkcí, zásady algoritmizace úloh. |
??? |
diskuse domácích úkolů a jejich presentace |
Syllabus
Prostředí Matlabu: příkazová řádka a související věci
- Proč má cenu používat Matlab: "ukutit" sám.
- Obecná charakteristika prostředí Matlab. Matlab je jazyk i prostředí.
- Jazyky kompilované a interpretované - Matlab není striktně vzato ani jedno
z toho. Skripty obtížně přenositelné (freewarový analog Octave)
- (i) Vtipné. (ii) Neprogramuj si sám, co už je naprogramováno. (iii) Geniálně
jednoduchý výstup.
- Číslice, znaky, speciální znaky. Bílé znaky (mezera, tabulátor, nový řádek).
Speciální a bílé znaky nesmí být součástí jmen proměnných. Jejich význam je
rozmanitý, často závisí na kontextu.
- Příkazová řádka. Pracovní adresáře. Proměnné. Proměnná ans. Výstup
na obrazovku. Speciální operátor středník (;),
- Přiřazovací příkaz (=). Základem jakéhokoli programu. Pozor: přiřazovací
příkaz je příkaz zápisu do operační paměti. (Chyba při jeho použití
proto může - na rozdíl od příkazů čtení - mít netušené následky.)
- Matlab workspace. Workspace browser. Příkazy who, load,
save, pwd, cd.
- Pořadí hledání jmen v Matlabu. Vlastní proměnnou "přepíšu" předdefinovanou
proměnnou.
- Helpwin a Helpdesk. Manuály. Se syntaxí nejsou žerty. Skoro nic není třeba
umět zpaměti - spíš znát logiku a vědět, kde co hledat.
Prvky jazyka Matlab: konstanty, proměnné, funkce.
- Jména proměnných a hodnoty proměnných. Velikost proměnných. Adresa. Numerické
(double) a znakové proměnné (char).
- Deklarace a přiřazení hodnot. Spoustu věcí udělá Matlab sám! Proměnná se
deklaruje automaticky prvním přiřazovacím příkazem, ale nedeklaruje se použitím
na pravé straně přřazovacího příkazu.
- Typy proměnných. Skaláry, vektory, matice. MATrix LABoratory.
- Některé speciální operátory při práci s maticemi a vektory: dvojtečka (:),
hranaté závorky [], apostrof ('), středník (;)
- Funkce size, length. (Poznámka o tom, co to jsou funkce.)
- Přístup k jednotlivým hodnotám vektorů a matic. Příkaz end.
- Použití kulatých závorek: 1. přístup k prvkům matic a polí, 2. argumenty
funkcí, 3. pořadí operací. Jejich označování v editoru Matlabu.
- Algebraické a logické operátory. Hierarchie operací.
- Použití algebraických a logických operátorů na vektorech a maticích. Vektor/matice
a skalár, vektor/matice a vektor/matice.
- Maticové algebraické operátory (.* a ./) vs. skalární algebraické
operátory (* a /) - pozor - běžný zdroj chyb!
- Textové proměnné a práce s nimi. Jména textových proměnných a hodnoty textových
proměnných. Řadu operací s textovými proměnnými lze zvládnout s běžnými operátory.
Funkce na práci s textovými proměnnými (concat, strcmp a další). Konverse
textových proměnných na čísla a zpět. Parsing.
Funkce, argumenty funkcí, návratové proměnné.
- Argumenty.
- Návratové proměnné. Zacházení s funkcemi, které mají větší počet návratových
proměnných.
- Použití funkcí z příkazové řádky.
Přehled důležitých typů funkcí a jejich použití.
- Matematické a další funkce skoro na všechno. (Než začneš programovat, hledej
hotovou funkci.) V tomto kursu jen stručné bestiárium - aby si člověk byl
vědom toho, co všechno lze funkcemi dosáhnout.
- Funkce na vytváření proměnných. Funkce zeros, ones, eye, rand, randn,
linspace, operátor :.
- Poznámka o generování náhodných čísel.
- Funkce na zacházení s proměnnými. Funkce size, length, diag, dim,
find, reshape, flipxx a rot90.
- Funkce sum, dif, prod, sort, sortrows.
- Zaokrouhlovací a jim příbuzné funkce. mod a rem.
- Matematické funkce. mod a rem.
- Funkce det, inv, eig.
- Použití matematických a dalších funkcí na skaláry, vektory a matice.
- Interpolace.
- Statistické funkce, statistická rozložení, least squares. Na statistiku
asi lépe použít specialisované jazyky (R, Splus)
- Funkce na konversi času, dat a podobných formátů. Konverse textů.
- Sparse matrices.
- Function functions
Programování vlastních funkcí. Skripty.
- Deklarace a definice funkcí.
- Editor Matlabu. Používané konvence (barvy, kontrola závorek atd.)
- Základní struktury funkce: argumenty, jejich použití, volání hodnotou a
volání adresou.
- Návratové hodnoty vlastních funkcí.
- Příkaz pause.
- Deklarace proměnných uvnitř funkcí. Workspace. Příkaz persistent.
- Použití proměnných mezi funkcemi. Přístupnost proměnných napříč funkcemi.
Příkaz global.
- Funkce uvnitř funkcí.
- Použití funkcí jako procedur: Funkce mohou číst a tisknout soubory.
- Komentáře, operátor %.
Struktury jazyka: typy příkazů.
- Strukturované programování.
- Příkazy if, switch, for a while a související.
Zásady štábní kultury v programování. Důležité morality.
- Grafická úprava programu.
- Věci k případné změně vždy v hlavičce.
- Konstanty a popis dat zadávat zevně, ne uvnitř programu.
- I když celá činnost je z hlediska profesionálního programátora fušerství,
nic nikdy nefušovat! (Fušerské triky člověk časem zapomene, a pak je chování
programu nepředvidatelné). Zejména je důležité předpokládat, že data příště
mohou vypadat jinak!
- Komentáře.
- Opakované použití proměnných.
- Vlastní konvence - dodržovat i ty. Pedantství.
- Elegance a jednoduchost. (nejen kvůli možnosti kontroly a pravděpodobnosti
chyby.)
- Zálohování starých versí, protokolování změn.
Grafické funkce a jejich použití.
- Funkce plot a související příkazy.
- Okno obrázku a jeho vlastnosti. Příkazy hold, figure, gcf, clf a
další.
- Funkce print (i do souboru, např. jpg)
- Funkce plot3, mesh, surf.
- Speciální grafické funkce. contour, fill, bar, hist, image.
Zásady algoritmizace úloh.
- Celá algoritmizace na začátku (rozvaha).
- Modulární struktura (rozdělení úlohy do dílčích funkcí) je výhodou (i když
v Matlabu ne tolik). Jednotlivé funkce pak mohou být použity v různých úlohách.
- Navrhovat nové funkce podle možnosti obecně - nikdy člověk dopředu neví,
co bude přesně potřebovat.
- Maximum použití existujících funkcí
- Maximum použití vektorové a maticové logiky: rychlost výpočtu - příklad
váženého průměru. Někdy zhoršuje čitelnost programu (zejména jsou-li použity
exotičtější funkce) - komentáře.
- Typické datové struktury v (ekologických) úlohách. Dobrá representace dat
je polovina úspěchu.
Praxe programování: zkoumání hodnot proměnných, zásady testování programů,
limitní případy.
- Ošetřit všechny případy vstupních proměnných, jež mohou nastat (nelze se
spolehnout, že nenastanou!)
- Nízkoúrovňové a vysokoúrovňové testování
- Postupné zkoumání hodnot a typů (to druhé v Matlabu obzvlášť důležité) proměnných:
nevěř ničemu, zejména ne ve vlastním programu
- Zkoumání chování dílčích funkcí v interaktivním režimu.
- Testování limitními případy.
- Testování malými soubory.
- Nikdy program není stoprocentně testován, ale to není důvod k tomu, aby
bylo testování zanedbáváno.
Vstup a výstup dat ve funkcích.
- Alternativní komunikace s funkcemi: Funkce mohou číst a tisknout soubory.
- Vstup a výstup dat. Zásady I/O operací.
- Vysokoúrovňové funkce pro vstup a výstup (textread)
- Nízkoúrovňové funkce pro vstup a výstup, otevírání a zavírání souborů. Práva
přístupu. Formátování.
- Tisk do souboru, tisk do textové proměnné.
Knihovny funkcí na internetu a jejich bezpečné využívání.
- Některé doporučitelné knihovny.
- Důvěra
- Freewarové analogy Matlabu ().
Na každou část navazuje praktikum věnované typickým ekologickým problémům.
V něm si účastníci vytvoří skripty vlastní, budou zkoumat skripty svých kolegů
a podobně.
Některé praktické odkazy
Domovská stránka