Biomedicínský technik 2012-15

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í

Indexed Color

Převod obrázků, nebo prvního obrázku animace do odstínů šedi (černobílé)

Indexed Color

Načtení a přehrání zvukového souboru

Točící kulatá šachovncie

Točící kulatá šachovncie pomocí timeru

písemka z matlabu

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

house md copyright
Vzkazy
HouseMD 08.07 15:58
Ahoj Míťo, máš to na mailu.
Miťa 08.07 11:28
Ahoj, mohl bych poprosit o zaslání hesla ke skriptům. Připravuji se k SZZ. Děkuji 0506diamond0506@gmail.com :)
David 18.12 00:09
Ahoj, mohl by mi prosím někdo zaslat heslo na skripta na email davidsebe@email.cz Děkuju moc!
HouseMD 24.10 16:53
Ahoj, heslo máš na mailu.
Eva 24.10 15:25
Ahoj, Mohla bych poprosit heslo na skripta, jsem v 5.ročníku BMI. Děkuji moc! evicekek@email.cz
Miro 28.09 21:12
poprosím heslo na skripta. dekuji doom13@azet.sk
HouseMD 13.09 17:58
Ahoj Kubo, heslo máš na mailu.
Jakub 13.09 13:56
Ahoj, mohl bych taky dostat heslo na skripta? tarzanboj1@seznam.cz
HouseMD 03.07 21:21
Ahoj Honzo, heslo na skripta jsem ti poslal na mail.
Honza 03.07 12:27
Ahoj, můžete mi někdo poslat heslo na skripta? Za ty roky jsem ho zapomněl a teď by se mi v práci hodilo pár informací. Díky (bednar10@seznam.cz)
House MD 18.03 16:48
Ahoj Markét, heslo máš na mailu.
Market 18.03 16:36
Ahoj, mohla bych poprosit o heslo na skripta? Děkuji, moc by mi to pomohlo. bayerova.marketa@seznam.cz
House MD 11.01 23:44
Ahoj Aneto, poslal jsem Ti heslo na mail. Přeju hodně úspechů při studiu.
anet 11.01 23:20
Ahoj, mohl by mi prosím někdo zaslat heslo na email, moc by mi to pomohlo. Děkujii :) anetabec@seznam.cz
House MD 11.09 17:20
Ahoj Petře, posláno
Petr 11.09 17:06
Ahoj, mohl bys mi prosím poslat heslo na skripta? Děkuji. kramape@gmail.com
House MD 28.05 22:16
Ahoj Miro, ano, můžeš, ale tady ho psát nebudu.
Miro 28.05 20:19
Môžem dostať heslo ku skriptam?
House MD 20.03 23:01
Ahoj Míšo, máš to na mailu.
Míša 20.03 21:33
Ahoj, mohla bych také heslo ke skriptům? :D email: misule1999@seznam.cz
House MD 08.01 23:59
Posláno
Tris 08.01 21:26
Ahoj, mohla bych taky poprosit o heslo na skripta? darkbe28@gmail.com Děkuji.
Štěpán 15.10 09:09
Ahoj, můžu taky poprosit o heslo? stepan.pindur(at)gmail.com. Díky, Štěpán
Marie 18.09 00:13
Ahoj, můžu poprosit heslo na majachadrabova@gmail.com. Děkuji
House MD 07.08 00:34
Ahoj Miro, máš to na mailu.
Miro 06.08 15:12
Mozem poprosit heslo na doom13@azet.sk. Dik
Adri 15.05 10:22
Ahoj, můžu prosím taky heslo na adriana.galuszka@gmail.com. Děkuji
Martina 14.05 12:10
Ahoj, mohla bych poprosit o heslo na skripta, (chtěla bych se dostat ke skriptu od Penhakera z 2007) ve kterých bych si ráda něco ověřila v rámci přípravy ke státnicím? Email polachova.m@email.cz. Děkuji, moc mi to pomůže.
TajnyNeznamy 01.12 15:16
Existuje nějaká podobná stránka jako tato pro magisterské studium?
House MD 09.03 11:57
Cau kiki, heslo jsem ti poslal na mail.
TVOJE NÁVŠTĚVY
WEB DNES:1 KRÁT
ČLÁNEK DNES:1 KRÁT
TENTO ČLÁNEK:mas
MINULÝ ČLÁNEK:nothing
NÁVŠTĚVY VŠECH
WEB DNES:54 KRÁT
WEB CELKEM:161494 KRÁT
od 1.1.2014
kočka audio slider