Matlab a simulace
Skripta
Matlab a simulace pro biomedicinske obory - Penhaker, Kubíček (pdf 7,2 MB 489 stran).
Zpracování obrazu v řídící a měříci technice - Hájovský, Pustková, Kutálek.
Digitální zpracování obrazu - Sojka, Gaura, Krumnikl.
Organizace
První písemka za 30 bodů se píše na přednášce, druhá za 70 bodů (7 příkladů po 10 bodech) na kompech na cvičení.
Odkaz na stažení Matlabu 2016
Matlab R2016a - torrent z thepiratebay.org, 7,71 GB obsahuje všechny důležité toolboxy, např. Bioinformatics Toolbox 4.6, Data Acquisition Toolbox 3.9, Image Processing Toolbox 9.4, Parallel Computing Toolbox 6.8, Partial Differential Equation Toolbox 2.2, Signal Processing Toolbox 7.2, Symbolic Math Toolbox 7.0, Simulink.... Bohužel GUI vytvořená v matlabu 2014b a novéjším nemusí fungovat ve starších verzích matlabu, protože grafické handles už nejsou double ale objekty.
Poznámky
Operátory v MATLABU
; (semicolon, středník) - vytváří pole (matici) oddělováním řádků matice, potlačuje výpis výsledku příkazu a umožňuje psaní více příkazu na jeden řádek tím, že jím jednotlivé příkazy na řádku oddělíme.
: (colon, dvojtečka) - vytváří posloupnosti nebo konvertuje na soupcový vektor,
např. matice a=[1 2 3;4 5 6] má rozměry 2*3 a pokud napíšu b=a(:), tak v béčku bude matice o rozemrech 6*1, tedy b=[1;2;3;4;5;6], což je sloupcový vektor.
{ } (curly brackets, složené závorky) - k vytváření polí buněk, což je podobné struktuře v jazyku C, ale k vytvoření struktury slouží příkaz struct.
format - funkce nastavující formát, ve kterém se budou zobrazovat výsledky. Nemá vliv na provádění výpočtů. format - nastaví výchozí zobrazování výsledků, format compact - kolem výsledků nebudou prázdné ("zbytečné") řádky, format long - čísla se nebudou vypisovat se čtyřmi, ale se čtrnácti desetinnými místy.
whos - přehled proměnných, who - jen názvy proměnných
dir - výpis adresáře, cd - změna adresáře
proměnné i a j jsou vyhrazeny pro komplexní čísla, pokud do nich něco uložíme, zbavíme se možnosti pracovat s komplexními čísly, ale po použití příkazu clear navrátíme proměnné do původního stavu a můžeme znovu používat komplexní čísla.
fprintf - podobné funkci printf v jazyku C, slouží k vytisknutí znaků do souboru, např. a=5; fprintf('hodnota a je: %d\n',a); zobrazí: hodntoa a je: 5.
sprintf - podobné funkci printf v jazyku C, slouží k formatování stringů (textových řetězců) např. a=5; sprintf('hodnota a je: %d\n',a); zobrazí: hodntoa a je: 5.
ver - zobrazi verzi matlabu a verze všech ejho toolboxu, hodí se pro zjiětení nainstalvoaných toolboxů. Pokud chcete zjistit jestli je v kompu licence pro nejaky konkretni produkt, tak se to robi takto: status = license('test','SIMULINK').
max(A,[],dim) - returns the largest elements along the dimension of A specified by scalar dim. For example, max(A,[],1) produces the maximum values along the first dimension of A.
length - to samé jako max(size(x))
sum (x) - pokud je x vektor, je výsledkem součet jeho prvků, pokud je x matice M*N je výsledkem řádkový vektor obsahující součet hodnot v daném sloupci . pro vícerozměrné pole je výsledkem suma první non-singleton dimenze.
b=[1:1:10]; b=[1,b(2:end)] - vytvoří vektor s hodnotami 1-10, pak první pozici vektoru b přepíše 1 a na zbylé hodnoty vektoru b přepíše hodnotami vektoru b od druhého až po jeho konečný prvek.
bla = bla(bla>5) - vybere jen ty prvky, ktere jsou vetsi nez 5.
V=x*x - skalární součin vektorů
V=x'*x - vektorový součin vektorů
C=2*rand(2,2)+5 - vytvoří matici 2x2 naplněnou náhodnými čísly v intervalu 5 až 7. Minimálně 5 je tam proto, že přičítám pokaždé pětku a maximálně 7 proto, že k té pětce přičtu náhodne číslo 0 až 1 vynásobené dvěmi.
p=randn(10) - 10 náhodných čísel podle Gaussova rozdělení
V=det(x) - determinant x
V=inv(x) - inverzní matice
x=inv(A)*b nebo x=A\b - řešení soustavy lin. rovnic A*x=b
logspace(X1, X2, N) - první 10^X1, poslední 10^X2, N - počet členů, tzn. logspace(1,4,4) zrobí čísla 10 100 1000 10000.
rand - rand(5) - matice 5*5 s náhodnými čísly 0-1, rand (3,5) matice 3*5 ...
complex(1,2) - vytvoří komplexní číslo 1 + 2i.
conj(a) - complex conjugate of a. Komplexně sdružené číslo, tzn. přehozené znaménko u komplexního členu.
stem(x,sin(x)) - diskretni graf
stairs(x,sin(x)) - schodovy graf
hist - histogram
bar([1 3 8]) - sloupcový graf (bar chart).
area([0 4 7 9 10 9 7 4 0 -4 -7 -9 -10]) - graf s vybarvenou plochou pod krivkou
roots([1 0 -1]) - vypíše kořeny polynomu 1x^2 + 0x^1 -1x^0. No a protože polynom (x2-1) se rovná 0 když za x dosadím 1 nebo -1, bude výsledkem [1,-1]
poly ([1 -1]) - ze zadaných kořenu polynomu vytvoří odpovídající polynom, tzn. udělá takový polynom, že když do něj dosasím tyto kořeny, výjde nula, no a to platí v případě polynomu (x2-1).
polyfit(x,fx,n) - proloží funkci fx v bodech x polynomem n-tého stupně.
mean(x) - průměr
var(x) - rozptyl, variance
std(x) - směrodatná odchylka, standart deviation
collect((x+1)^2) - vrátí: x^2+2x+1
simple((cos(x))^2+(sin(x))^2) - vrátí: 1, bo sin na druhou plus cos na druhou je jedna. Simplify(fx) je asi to same.
limit((1/x),inf) - vrátí: 0
char(69) - vrátí znak odpovídající argumentu, v tomto případě písmeno E.
compose(fx1,fx2) - vrátí výslednou rovnici složené funkce fx1(fx2(x)), takže pokud fx1=x^2 a fx2=x^2, tak vrátí x^4 ("fx1(fx2(x)) - nejdřív dám argument fx2 na druhou a výsledek znovu na druhou, takze rovnou muzu dat na ctvrtou"). Pokud jako treti argument funkce compose uvedu konkretni cislo, tak mi to vrati vyslednou funkcni hodnotu slozene f-ce. composed function - složená f-ce. Je třeba definovat symbolickou proměnnou.
subs(do_čeho,za_co,hodnota) - vrátí funkční hodnotu funkce v bode, napr. pro: fx=x^2+5;subs(fx,x,5); vrati matlab: 30. argumentem muze byt i matice hodnot.f = sym('x+2*y-z'); x = 2; y = 3; subs(f); - vrati 8-z.
dsolve('x*Dy+y=sin(x)','x') - řešení diferenciální rovnice xy'+y = sin x. Jako druhý argument se uvádí nezávislá proměnná, v tomto případě x. Derivace s v tomto případě značí písmenem D. Výsledek je v tomto případě: -(C2 + cos(x))/x, takže y=-(c+cos(x))/x.
finverse(sin(x)) - inverzní funkce
vpa(pi,150) - vypíše číslo pí se 150 desetinnými místy.
[x,y]=solve('x+y=5','x-y=-1') - vyřeší soustavu lineárních rovnic, v tomto pripade x=2, y=3.
diff([1 2 5]) - diference mezi hodnotami vektoru, takze v tomto pripade 1 a 3, pokud bychom chteli spocitat prumernou diferenci hodnot, coz se nekdy hodi, zrobime to prikazem mean(diff(vektor)).
max(size(size(nazev_matice))) - zjistí kolik dimenzí má matice (např. 2D, 3D ....).
[vysledky, parametry, podminky] = solve('x+y=5','x-y=-1', 'ReturnConditions', true)
[x, y] = ginput(1) - kurzor myši se v aktualnim figure změní v zaměřovací křížek pomocí nějž můžu vybrat klikem myši souřadnice které se uloží do x a y.
impixel(PictureMatrix, x, y) - hodnota (barva) pixelu v obrazové matici x y.
dlmread('scope_1.csv',';', 2) - načte soubor číselných dat do matice (jmeno_souboru, oddelovac, kterym radkem zacit, pripadne kterym sloupcem zacit)
Working with Handle Graphics Objects
Řešení diferenciálních rovnic v matlabu
Zaklady se SIMULINKEM
Interpolace, převzorkování obrazu
GUI
Nové grafické uživatelské rozhraní lze vytvořit pomocí průvodce k tomu určeného, který se dá vyvolat napsáním guide do command window, nebo pomocí New -> Graphical User Interface.
Pop-up menu
Rozklikávací menu, v jehož callbacku lze získat číselnou hodnotu (pořadí) zvoleného prvku pomocí hodnota = get(hObject, 'Value'). Pomocí stringy = get(hObject, 'String') lze získat buněčné pole Stringů. Vybrat z něj ten zvolený lze pomocí zvoleny = stringy{hodnota}.
Jak zavřít gui?
close - zavře aktuální figure (close(gcf)), close(h) - zavře okno h, kde h může být handle, pole handlů, nebo číslo okna.
CloseRequestFcn
Funkce která se provede po zavření. V průvodci kliknout pravým do volného prostoru -> View Callbacks -> CloseRequestFcn
Jak vybrat axes
axes(handles.mojeosy) - vybere mojeosy a nastaví CurrentAxes na mojeosy.
Jak sdílet data mezi funkcemi gui?
Buď pomocí globálních proměnných (např. global promenna) které je třeba uvést v každé funkci která je má použít (zase pomocí global peomenna). Další možnost je použít strukturu handle do které budu přidávat proměnné (např. handles.zkouska = 'zkusebni text'). V OpeningFcn je třeba definvoat tyto proměnné ještě před příkazem guidata(hObject, handles), který aktualizuje strukturu.
Animace
Ruzne typy signalu
Čtení DICOM
Zjištění rozlišení a velikosti pixelu
Načtení a zobrazení obrázků a animací
Převod obrázků, nebo prvního obrázku animace do odstínů šedi (černobílé)
Načtení a přehrání zvukového souboru
Točící kulatá šachovncie
Točící kulatá šachovncie pomocí timeru
Zuzana Berger Haladová - Ako sa zmenilo počítačové videnie s nástupom hlbokých neurónových sietí
Stránka k předmětu Počítačové videnie.
How to see around corners