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

house md copyright
Vzkazy
House MD 09.03 11:57
Cau kiki, heslo jsem ti poslal na mail.
Kiki 08.03 17:45
Ahoj, mohla bych prosím dostat heslo na skripta, jsem v 2. ročníku BMT. Děkuji kiki.fen@seznam.cz
Daniel 29.11 15:48
Ahoj, můžeš mi prosím poslat heslo od script do EO a semestralku na superpozici? Díky --- PrecekDaniel@seznam.cz
House MD 16.11 19:01
Čaute, přidal jsem do EO1 postup + kod pro matlab na výpočet semestrálky přes MUN a Thévenina + schéma v simulátoru obvodů. Všechno spolu sedí, tak bych to snad měl mít dobře.
AD 14.11 15:25
Ahoj ,môžem poprosiť heslo na Pracovní sešit EO1?Poprípadne vypracovanú seminárku do EO1 na superpoziciu ,skôr ako to ma vyzerať než nejaké riešenie. Ďakujem :) alzbeta.durikova@gmail.com
J 13.11 11:48
Ahoj, prosím, nemáte někdo vypracovanou seminárku do eo1 na theveninovu větu? máme asi určitě jiný obvod, ale spíš bych to potřebovala pro postup jak to mám řešit, nevím od čeho se odpíchnout... díky moc :) jarmila.rucki@seznam.cz
House MD 24.10 15:04
Máte to na mailu, za správnost neručím :-)
Vsb.bme@gmail.c 24.10 12:39
Ahoj, prosim nemate nekdo vypracovane protokoly do eo1? Ten hrbac nam neni schopny k tomi nic rict... diky moc.
House MD 19.09 21:52
Ahoj Evo, mrkni na mail
Eva 19.09 16:37
Ahoj, mohla bych prosím dostat heslo na skripta? Jsem v 1. ročníku BMT. Děkuji. evamal10001@seznam,cz
House MD 15.09 16:44
Ahoj Dane, taky to máš na mailu
d.volny 15.09 16:37
Zdravím, mohl bych poprosit o heslo na skripta? Jsem student BTE 2. ročníku. Díky volny.daniel@gmail.com
House MD 13.09 13:03
Ahoj Katko, máš to na mailu
k.zemanova 12.09 17:53
Zdravím, mohla bych taky poprosit o heslo na skripta? Jsem v 1. ročníku BMT a nemůžu některé sehnat. Děkuju kat.zemanova3@gmail.com
House MD 25.05 20:51
OK
nov0440@vsb.cz 25.05 19:10
Zdravím, mohu poprosit o heslo na skripta. Díky
House MD 19.04 23:01
Máš to tam
Jan 18.04 22:44
Zdravím, mohl bych poprosit heslo. 2. ročník BMT. Děkuji :) honza.sushi@seznam.cz
House MD 04.03 18:03
Posláno
Marek 04.03 17:07
Zdravím ;) Mohl bych poprosit heslo? 2. ročník BMT, děkuji wolwo@seznam.cz
House MD 04.03 12:36
OK
Hanka 04.03 10:02
Ahoj mohla bych dostat heslo? Dík. hannah23@seznam.cz Hanka
House MD 05.01 17:00
Máš to na mailu.
bys0040@vsb.cz 05.01 16:03
Ahoj, můžu poprosit o heslo na skripta? Díky
House MD 03.11 11:59
Posláno
skv0015@vsb.cz 03.11 00:36
Ahoj, mohl bych také poprosit o heslo na skripta? Nevím kde bych ho mohl sehnat. Dí­ky (jsem studentem první­ho ročníku BTE)
House MD 09.10 16:39
Posláno
pet0173@vsb.cz 08.10 23:39
Může mi někdo napsat heslo pro stáhnutí souborů. Díky. pet0173@vsb.cz. Jsem dálkový student.
House MD 24.04 00:17
Pro jistotu bych tam dal 17 :-)
Majkl 23.04 10:36
Přepsání názvu webu by mělo být 2012-16 :DDD
TVOJE NÁVŠTĚVY
WEB DNES:1 KRÁT
ČLÁNEK DNES:1 KRÁT
TENTO ČLÁNEK:mas
MINULÝ ČLÁNEK:bs_2
NÁVŠTĚVY VŠECH
WEB DNES:10 KRÁT
WEB CELKEM:63720 KRÁT
od 1.1.2014
kočka audio slider