Slaboproudý obzor Roč. 70 (2014) Číslo 2
K. Zaplatílek: Vybrané problémy časové optimalizace …
P1
VYBRANÉ PROBLÉMY ČASOVÉ OPTIMALIZACE ZDROJOVÉHO KÓDU V PROSTŘEDÍ MATLAB® Prof. Ing. Karel Zaplatílek, Ph.D. Katedra elektrotechniky; Fakulta vojenských technologií, Univerzita obrany, Brno,
[email protected] Abstrakt
Abstract
Článek je zaměřen na základní možnosti a techniky, jak optimalizovat zdrojový kód algoritmu z hlediska časové náročnosti. Dvě základní použité metody měření času jsou aplikovány na vybrané postupy a klíčové části kódu. Jsou uvedena základní doporučení pro vyvarování se chyb při programování v prostředí MATLAB.
This contribution is focused on basic possibilities and techniques for time optimized applications and source codes. Two basic measuring methods are applied to selected procedures and key parts of the source code. Basic recommendations are introduced for avoidance of programming errors in MATLAB environment.
Klíčová slova: MATLAB, časová optimalizace algoritmů.
Keywords: MATLAB, time optimization.
1
2.1 Optimalizace na co nejkratší dobu trvání
Úvod a zaměření článku
S trochou nadsázky lze napsat, že na dobu vykonání algoritmu nebo obecně zdrojového kódu (dále jen algoritmu) má vliv téměř vše, co souvisí jak s kódem samotným, tak s hardwarovým vybavením počítače či jeho okolím. Zkušenost navíc říká, že při opakovaném spouštění algoritmu se doba jeho provedení vždy mírně odlišuje; přitom první spuštění může být výrazně delší, než všechna ostatní. Roli zde hraje také použitý operační systém a jeho okamžitý stav. Pro účely tohoto článku je uvažována standardní práce uživatele v prostředí MATLAB, která zahrnuje zejména tyto činnosti: • Otevření vestavěného editoru zdrojového textu. • Zápis a ladění kódu. • Uložení aplikace na disk. Vzhledem k rozsáhlosti prostředí a značnému množství variant a způsobů tvorby algoritmů se zde omezíme pouze na vlastní MATLAB a jeho poměrně jednoduchý skriptovací programovací jazyk. Není zde věnována pozornost objektovému přístupu ani spolupráci s externím hardware. Není uvažována ani nadstavba Simulink®, neboť optimalizace jeho blokově orientovaných struktur je problematikou značně rozsáhlou, výrazně přesahující záměry článku. Další text by měl sloužit především technicky orientovanému uživateli, používajícímu MATLAB jako prostředek a nástroj.
2
Vymezení pojmu „časová optimalizace“
Z praxe je známé a zažité, že na rozdíl od obecného pojmu optimalizace je v případě ladění algoritmu a priori předpokládána maximální možná rychlost, tedy minimální doba jeho trvání. Je to však silně zúžený pohled, jenž nebere v potaz mnoho níže uvedených podmínek. Optimalizovat algoritmus z hlediska doby trvání proto zahrnuje zejména tato opatření: • Zajištění minimální možné doby trvání. • Přizpůsobení doby trvání konkrétním podmínkám. Rozeberme podrobněji obě tyto možnosti.
Jedná se o nejčastější požadavek uživatelů ve vztahu k jejich konkrétní aplikaci. Důvody k této optimalizaci jsou zejména tyto: • Potřeba běhu algoritmu v reálném čase (real time). • Práce s rozsáhlým zdrojovým kódem. • Spolupráce více aplikací (nalezení nejslabšího článku). • Propojení s měřicími kartami, přístroji aj. Zajímavé bude uvést nejčastější příčiny zpomalování kódu: • Neoptimální části kódu (zkušenost uživatele). • Zpracování velkých objemů dat. • Obsluha objektů GUI (grafické uživatelské rozhraní) včetně kreslení a správy grafických výstupů. • Volání externích m-souborů (scriptů, funkcí). • Čekání na vstupy, přerušení, obsluha periferií apod. • Případný síťový provoz. • Další příčiny.
2.2 Přizpůsobení doby trvání algoritmu Důvodem k přizpůsobení, často k mírnému zpomalení doby trvání zdrojového kódu jsou zejména tyto: • Potřeba vizualizace a animace grafických výstupů. • Volání externích aplikací. • Spolupráce s hardware, resp. obsluha komunikačních rozhraní. • Obsluha objektů GUI (čekání na událost), obecně obsluha vstupů. • Další příčiny. Praxe v MATLAB ukazuje, že zejména práce s grafy a obsluha objektů GUI je někdy velmi obtížně řešitelná a výrazně prodlužuje dobu běhu algoritmu. Platí zde, že mnohdy je numerická část algoritmu již ukončena, ale systém stále čeká na odezvu, např. kreslí grafy. Podobných zkušeností s různými prioritami obsluhy je více, např. obsluha zvukové karty.
K. Zaplatílek: Vybrané problémy časové optimalizace …
P2
Je-li požadavek na animaci grafických výstupů, tedy aby uživatel očima stíhal sledovat dynamické změny grafů, je často třeba zařadit do kódu pauzy, které, byť velmi malé, mohou ve výsledku celý algoritmus časově významně prodloužit.
3
Slaboproudý obzor Roč. 70 (2014) Číslo 2
Pomocí dvojice příkazů tic, toc lze velmi efektivně měřit nejen dobu trvání celého zdrojového kódu, ale především jeho vybraných částí. Příkaz tic umístíme před vybranou část kódu, toc poté za něj, jak dokládá obr. 3.
Měření doby trvání algoritmu
V prostředí MATLAB existuje několik možností, jak přesně změřit dobu běhu algoritmu nebo jeho části. V praxi se osvědčily zejména tyto příkazy: • profile. • tic, toc. Příkaz profile on, který předchází spuštění měřené aplikace, startuje poměrně rozsáhlý systém pro detailní zobrazení časového snímku celé aplikace, včetně vnitřních či externích m-souborů. Podle zkušeností je vhodný zejména pro delší a komplikovanější kódy, neboť umožňuje měřit jak celkový čas, tak podíl jednotlivých řádků, resp. příkazů kódu.
Obr. 1.
Měření časového snímku aplikace příkazem profile.
Na obr. 1 je ukázáno použití příkazu profile k měření a zobrazení časového snímku poměrně rozsáhlé aplikace Solar_Model_01.m. Pomocí profile on je celý systém nastartován na pozadí a díky profile viewer dojde k zobrazení grafického výstupu po ukončení aplikace podle obr. 2.
Obr. 3.
Práce s příkazy tic a toc pro měření doby trvání části kódu.
Po spuštění aplikace je ve Workspace automaticky vypsána informace o době trvání vybrané části kódu. Zmíněná dvojice příkazů je vhodná zejména pro tzv. provozní měření během ladění aplikace anebo pro přímé srovnání více variant algoritmu. Výstup je také informačně střídmý, což jistě přispívá k atraktivitě tohoto způsobu měření času. Předností je také možnost vícenásobného použití v rámci jedné aplikace. K dalším příkazům z této oblasti náleží např. cputime, etime, clock, datenum, datevec, now.
4
Vlastní optimalizace algoritmu
S vědomím výše popsaného se v této kapitole věnujeme optimalizaci na co nejkratší čas běhu aplikace. Na základě mnohaletých zkušeností s množstvím odladěných aplikací různého druhu se zaměříme na vybrané, často používané programátorské techniky. Pro vlastní měření použijeme popsané příkazy tic, toc.
4.1 Indexování vektorů a matic
Obr. 2.
Vybrané části časového snímku aplikace s využitím příkazu profile.
V horní části obr. 2 je počátek výpisu časového snímku jako odezva příkazu profile viewer. Spodní část ukazuje vybranou nabídku po kliknutí uživatele na řádek s názvem Solar_Model_01 z horní části grafu. Je zde vidět podíl jednotlivých řádku na celkové době trvání kódu. Uživatel poté může provádět optimalizaci, je-li to třeba. Po kliknutí na vybraný řádek jsou dostupné podrobnější informace. Příkaz profile má k dispozici ještě několik dalších možných parametrů, viz help profile.
Vektory a matice patří v prostředí MATLAB k nejčastěji používaným datovým objektům. Omezíme se na základní, v praxi nejrozšířenější dimenze s vědomím, že nabyté zkušenosti budou plně aplikovatelné také na vícerozměrné matice, a dále i na další datové typy jako např. Cell Array a Structure Array. Indexování vektorů a matic je úsporná technika, umožňující efektivní práci s jednotlivými prvky matic nebo jejich skupinami. Nahrazuje jinak běžně používané cykly, v prostředí MATLAB dosažitelné díky dvojici příkazů for, end. Lze předpokládat, že klasické, zejména vícenásobné cykly budou ve výsledku pomalejší. V dalším textu se zaměříme na práci s maticemi. Aplikace na vektory je jednoduchou modifikací.
Slaboproudý obzor Roč. 70 (2014) Číslo 2
K. Zaplatílek: Vybrané problémy časové optimalizace …
P3
Zajímavá situace nastane, pokud v obr. 4 za příkaz na řádku č. 7 zapíšeme dva příkazy: [a,b]=size(A); B=zeros(a,b); Matice B je tedy předem vytvořena ze samých nul. Poměr doby trvání algoritmu s cykly a s indesováním
1200 1000
i
tc/t [-]
800 600 400 200 0 1 10
Obr. 5.
Obr. 4.
Aplikace pro testování techniky indexování matic.
Na obr. 4 je zdrojový text jednoduché aplikace pro testování doby trvání kódu, který provádí přehození řádků a sloupců čtvercové matice s rozměrem (dimenzí) N = 10, získané příkazem magic. Příkazy tic, toc jsou použity dvakrát, a to jak pro cykly, tak i pro techniku indexování. Číselné údaje změřených dob jsou aritmetickými průměry mnoha měření. Pro potlačení vlivu konkrétního počítače jsou výsledky shrnuty do poměru, viz tab. 1. Tab. 1.
Doba trvání algoritmu s cykly a s použitím indexování.
N [-] 10 20 30 40 50 100 1000 2000 5000
tc [s] 0,000028 0,000105 0,000149 0,000178 0,000305 0,001110 0,847900 7,637721 118,200240
ti [s] 0,000009 0,000010 0,000015 0,000018 0,000019 0,000025 0,003575 0,015468 0,103602
tc/ ti 3,111 10,500 9,933 9,889 19,023 44,400 237,175 493,776 1140,709
Výsledky mnoha experimentů s různými dimenzemi N lze shrnou takto: • Mírné kolísání doby trvání při jednotlivých spuštěních algoritmu. • Výrazná úspora času metodou indexování s rostoucím řádem matice (od přibližně N = 30 je rozdíl již řádový). Průběh poměru obou změřených dob je na obr. 5. Vzhledem k většímu rozptylu dimenzí testovací matice byla při kreslení zvolena logaritmická vodorovná osa příkazem semilogx.
2
3
10
10 10 Rozměr testovací čtvercové matice N [-]
4
Výsledky měření doby trvání algoritmu podle tab. 1.
Měření ukazují, že se výpočet pomocí cyklu významně zkrátí. Průběh poměru obou změřených dob má podle tab. 2 menší rozptyl, avšak jednotlivé doby jsou výrazně kratší, a to zejména pro vyšší dimenze matice. Tab. 2.
Zrychlení algoritmu vytvořením matice předem pomocí zeros.
N [-] 10 20 30 40 50 100 1000 2000 5000
tc [s] 0,000008 0,000023 0,000034 0,000058 0,000107 0,000303 0,027850 0,151047 0,958488
ti [s] 0,000100 0,000015 0,000016 0,000018 0,000020 0,000040 0,003818 0,015002 0,142504
tc/ ti 0,800 1,533 2,125 3,222 5,350 7,575 7,294 10,068 6,724
Dílčí závěr: Indexování matic výrazně zkracuje dobu trvání algoritmu; je tedy vhodné pro práci především s rozsáhlými soubory dat. Další úsporou času je vytvoření případných cílových matic před výkonnými částmi algoritmů.
4.2 Řetězení příkazů Některé příkazy pro práci s maticemi lze řetězit. Jde především o výpočet celkového maxima, minima a součtu všech prvků. Na obr. 6 je aplikace, upravená pro výpočet součtu všech prvků matice A. Výpočty jsou celkově o něco méně výpočetně náročné, jak dokládá tab. 3. Poměr obou měřených dob je poměrně nízký v porovnání s výsledky v tab. 1. Pro dimenzi matice N = 10 vychází dokonce použití cyklů mírně příznivěji. Dále se situace obrací a pro N > 100 dochází postupně k řádové a větší převaze řetězeného příkazu sum(sum(A)). Analogická situace platí pro určení celkového maxima či minima příkazy max(max(A)) a min(min(A)).
K. Zaplatílek: Vybrané problémy časové optimalizace …
P4
Obr. 6.
Řetězení příkazů pro výpočet součtu všech prvků matice.
Tab. 3.
Výpočet součtu prvků matice cykly a indexováním.
N [-] 10 20 30 40 50 100 1000 2000 5000
tc [s] 0,000009 0,000017 0,000023 0,000047 0,000066 0,000223 0,010942 0,043547 0,270122
ti [s] 0,000013 0,000014 0,000012 0,000015 0,000017 0,000028 0,000972 0,003719 0,022456
tc/ ti 0,692 1,214 1,917 3,133 3,882 7,964 11,287 11,709 12,029
Obr. 7.
Slaboproudý obzor Roč. 70 (2014) Číslo 2
Kreslení čárového 2D grafu příkazy plot a line.
Dílčí závěr:
Zdůrazněme, že kreslení příkazem stem poskytne podobné výsledky jako plot. Je zřejmé, že existují situace, kdy nemáme podobnou alternativu, např. při kreslení plošných grafů. Přesto lze s využitím výše uvedených zásad často výrazně kód urychlit. Při kreslení platí ještě více zásad, které mohou zefektivnit výsledný kód. Např. při opakovaných kresleních (animace) je účelné, kromě použití příkazu line, používat příkaz set pro změnu vykreslovaných dat. Vyvarujeme se tak opakovanému použití line, což opět může práci významně urychlit.
Podle předpokladu řetězení příkazů přináší výraznou úsporu doby trvání algoritmu, zejména pro větší objemy dat.
4.4 Práce s externími m-soubory
Poznamenejme, že indexování lze využít také např. k rychlé změně hodnot prvků a zejména jejich velkých skupin. Tak např. vynulujme určitou vnitřní část matice A příkazem: A(3:end-2,3:end-2)=0; V porovnání s cykly zde zjistíme podobnou situaci, jak výše popsáno.
4.3 Příkazy pro kreslení Omezíme se na kreslení 2D čárových (line) grafů. V ostatních případech platí výsledky analogicky. Intuitivním příkazem pro kreslení je plot. Na obr. 7 je aplikace pro tvorbu vektoru zadané délky a kreslení dvěma metodami (příkazy). Byl vytvořen vektor v dimenze N příkazem rand. Pro vyloučení nežádoucích časů byly oba objekty pro kreslení (plátna) vytvořeny před vlastním měřením času pomocí příkazů figure. Výsledky jsou tentokrát velmi průkazné, neboť pro N = 10 vyšlo: t plot = 0,129099 s a tline = 0,000623 s . Poměr obou dob má hodnotu 207,722. Samotný příkaz line je tedy výrazně rychlejší, nehledě na to, že umožňuje definovat více dalších volitelných parametrů, např. tzv. parent, tedy mateřský grafický objekt axes, v jehož rámci bude graf kreslen. Zajímavé je, že uvedený časový rozdíl se v principu již nemění ani při výrazně vyšší dimenzi vektoru N. Dílčí závěr: Použití nízkoúrovňového příkazu pro kreslení čárových grafů „line“ přináší oproti „plot“ výraznou úsporu času.
Poměrně častým případem je potřeba v rámci jednoho m-souboru volat jiné, ať již skripty nebo funkce. Je pak otázkou volby priorit ve vztahu ke konkrétnímu řešenému problému, zda celý zdrojový kód zapsat do jednoho souboru, anebo do více menších, avšak přehlednějších aplikací. Volba jednoho rozsáhlejšího souboru vždy vede k rychlejšímu kódu, neboť systém při volání externího algoritmu musí soubor z disku otevřít, vykonat kód a opět jej uzavřít (nemusíme ani měřit). Takové kódy však mohou být od určité délky obtížněji spravovatelné (rozsáhlost, množství proměnných). Naopak, více menších souborů, i přes pomalejší kód, může uživateli poskytnout přednosti ve snadnější správě kódu. Tato situace je palčivá zejména v případě, kdy potřebujeme mnohonásobně volat nějakou funkci. Dobrým kompromisem je zápis více funkcí (u scriptů to nelze) do jednoho m-souboru podle obr. 8. Jedna funkce je hlavní a v jejím těle jsou volány další, v dolní části kódu zapsané funkce. Volání lze samozřejmě různě provazovat. Tento způsob je při rozsáhlejších aplikacích v praxi vyzkoušený a kombinuje poměrně vysokou rychlost kódu s jeho poměrně snadnou správou a přehledností. Měření zde nejsou provedena, záleží vždy na konkrétní povaze a složitosti kódu.
Slaboproudý obzor Roč. 70 (2014) Číslo 2
K. Zaplatílek: Vybrané problémy časové optimalizace …
P5
typ proměnné, neošetřené nesmyslné zadání obsluhou, dlouhé výpisy proměnných - chybějící středník, množství podmíněných skoků, aj.). • Tzv. verzování m-souborů, tedy pořádek ve verzích aplikací. • Důsledný zápis vysvětlujících poznámek, zejména do dlouhých kódů včetně použití záložek. • Důsledné vícenásobné zálohování (nad rámec ladění). Praxe ukazuje, že zejména mladší uživatelé často opomíjejí některé z výše uvedených kroků. S nabývajícím objemem svých algoritmů tak často ztrácejí drahocenný čas hledáním souvislostí a významu proměnných. Také mají často problém vyznat se v různých variantách a verzích svých děl, jak dokládá téměř denní praxe. Obr. 8.
Práce s více funkcemi v jednom m-souboru.
Dílčí závěr: Zápisem více funkcí do jednoho m-souboru je často zachována přehlednost při poměrně slušné rychlosti.
4.5 Práce s grafickými objekty GUI Obsluha grafických objektů v rámci grafického uživatelského rozhraní (GUI) znamená často zápis a čtení jejich obsahu a stavu (objekty uicontrol typu push, edit, text, radiobutton, checkbox, slider, popupmenu, listbox, aj.). Obsahy paměti těchto objektů vyžadují v mnoha případech konverzi proměnné typu double (číslo) na textový řetězec (string) a naopak. Celkově platí, že obsluha těchto objektů je často výrazně pomalejší než běžné numerické části zdrojových kódů. Je-li kód bohatý na tyto grafické objekty, klade značné nároky na výpočetní rychlost celého mateřského počítače, především grafického adaptéru. Zkušenost nám říká, že tato omezení nelze často obejít a optimalizovat tyto části kódů na rychlost je značně obtížné, ne-li nemožné. Částečným řešením je tvořit grafické objekty s rozvahou, spíše jimi šetřit. Jde o událostmi řízené programování, proto zde můžeme hovořit spíše o přizpůsobení doby běhu zásahům uživatele (obsluhy), než o striktní časové optimalizaci ve smyslu zrychlení. Je také vhodné oddělit část kódu s GUI od zbylé části celého algoritmu. Připomeňme, že při programování GUI platí více než jinde apel na srozumitelnost kódu a ošetření nežádoucích případů a stavů. Celá aplikace se může snadnou „kousnout“, tedy zatuhnout, neboť na pozadí může probíhat nesprávně ošetřená obsluha grafických objektů. Práce s GUI proto vyžaduje jistou zkušenost. Mimoto pokud čtenář někdy pracoval s aplikací, odladěné na monitoru s velkou úhlopříčkou a vysokým rozlišením a poté s ní přešel na širokoúhlý notebook s menším rozlišením, jistě bude souhlasit, že i toto hledisko je při práci s GUI důležité.
4.6 Důsledné ladění zdrojového kódu Důsledným laděním kódu zde máme na mysli zejména tyto kroky: • Ošetření kritických stavů (přetečení indexů matic, dělení nulou, neexistující či přepsané proměnné, změněná cesta do složky na disku, nevhodný datový
4.7 Shrnutí možných cest optimalizace algoritmů Jistě existují další zásady, jak zrychlit zdrojový kód. Pokud však zůstaneme na poli technicky orientovaných uživatelů bez předchozího programátorského vzdělání, můžeme slovně uvést tyto použitelné a vyzkoušené postupy či techniky: • Dobrá znalost základů práce v prostředí MATLAB. • Porozumění všem částem kódu, zejména těm přejatým. • Pečlivé ladění s využitím měření časového snímku. • Vícenásobné ověření funkčnosti aplikací. • Ověření správné verze systému MATLAB, zejména zpětné kompatibility a potřebných toolboxů. • Překlad zdrojového kódu do samo-spustitelné aplikace (*.exe), resp. do knihoven a částí jiných jazyků a vývojových prostředí (vyžaduje zvláštní toolbox). • Volba dostatečně výkonného hardware, je-li to možné. Samostatnou kapitolou je spolupráce s externím hardware v podobě měřicích karet, přístrojů nebo procesorových systémů a hradlových polí. Zde kromě potřeby speciálních toolboxů je třeba vzít v úvahu povahu spolupracujícího hardware právě s ohledem na rychlost. V poslední době jsou součástí volitelných knihoven MATLAB, resp. Simulink také nástroje pro optimalizaci a verifikaci kódu. Jejich zaměření je však speciální a v případě potřeby je nutné se s nimi předem dobře seznámit. Poznamenejme, že tvořit grafické objekty GUI lze buďto ručně anebo s využitím grafické podpory, dostupné příkazem guide. První způsob vede na optimální kód vzhledem k požadavkům uživatele, druhý případ je názornější a tvorba kódu rychlejší, avšak mnohdy na úkor srozumitelnosti, zejména u rozsáhlejších projektů. Výběr je vždy na uživateli.
5
Závěr
Článek je věnován vybraným aspektům časové optimalizace zdrojového kódu v prostředí systému MATLAB. Jsou rozebrány základní možnosti optimalizace a hlavní příčiny neoptimálního běhu algoritmů z hlediska časové náročnosti. S využitím dvou základních technik měření času jsou rozebrány vybrané programovací techniky a postupy pro zrychlení algoritmů. Na základě zkušeností jsou prezentována hlavní doporučení pro vyvarování se chyb při programování. Článek je určen zejména, ale nejenom, mladším, především technicky orientovaným uživatelům MATLAB.
P6
K. Zaplatílek: Vybrané problémy časové optimalizace …
Poznámky Článek vznikl v rámci řešení na Univerzitě obrany v Brně.
projektu
ZRO-K217
MATLAB® a Simulink® jsou registrovanými ochrannými známkami společnosti The MathWorks, Inc.
Literatura [1] Zaplatílek, K. MATLAB®: Průvodce začínajícího uživatele. 1. vyd. Brno: Tribun EU, 2011. [2] Zaplatílek, K. MATLAB®: Začínáme s grafy 2D a 3D. 1. vyd. Brno: Tribun EU, 2012. [3] Zaplatílek, K. MATLAB®: Začínáme se systémy. 1. vyd. Brno: Tribun EU, 2011.
Konference RADIOKOMUNIKACE 2014 22. - 24. října 2014, Pardubice Letošní ročník této konference s více než třicetiletou tradicí je připraven nabídnout širší odborné veřejnosti z okruhů provozovatelů, uživatelů, investorů i z oblasti vědeckovýzkumné aktuální průřezový rozhled po vývoji, současném stavu a výhledech klíčových odvětví oboru radiokomunikací, a to včetně výsledků výzkumu a informací o technologických a aplikačních novinkách. Konference se opět uskuteční pod záštitou Ing. Mgr. Jaromíra Nováka, předsedy Rady Českého telekomunikačního úřadu. Připravovaný program má jako první zařazen blok příspěvků věnovaných problematice televize a rozhlasu ve světle zvažování nových způsobů využití rádiového spektra, které jsou umožněny v podmínkách tzv. digitální dividendy a nasazování nových standardů a technologií. S tím souvisí regulační záměry, které na národní úrovni odrážejí mezinárodní vývoj a jasně dokládají důležitost i nutnost zasvěcené a efektivní správy rádiového spektra. Připravované příspěvky uvedou v tomto kontextu aktuální stav digitálního vysílání u nás, problematiku přechodu na vyšší standard DVB-T2, situaci v regionálním vysílání a pohled regulátora na očekávaný vývoj rozhlasové služby. Tradičně budou uvedeny aktuální novinky v televizním vysílání a jako nová témata se představí možnosti služeb poskytovaných v rámci vysílání DRM+ a otázky koexistence systémů LTE a DVB-T včetně praktických zkušeností z měření.
Slaboproudý obzor Roč. 70 (2014) Číslo 2
[4] Zaplatílek, K., Doňar, B. MATLAB®: Začínáme se signály. 1. vyd. Praha: BEN-Technická literatura, 2006. [5] Grepl, R. Kinematika a dynamika mechatronických systémů. 1. vyd. Brno: Akademické nakladatelství CERM, 2007. [6] Šulc, B., Vítečková, M. Teorie a praxe návrhů regulačních obvodů. 1. vyd. Praha: BEN-Technická literatura, 2008. [7] Hanselman, D., Littlefield, B. Mastering MATLAB® 7. Pearson Prentice-Hall, 2007. [8] Smith, S. T. MATLAB®. Advanced GUI Development. Dog Ear Publishing, 2006. [9] Mathews, J. H., Fink, K. K. Numerical Methods Using MATLAB. Pearson Prentice-Hall, 2004.
Navazující část programu uvede skupinu témat zabývajících se pokročilými architekturami rádiového přenosu (LTE-A, akcelerace fenoménu M2M, mobilní komunikace 5G, systémy MAS s více anténami) a o jejich vzájemném ovlivňování s ostatními rádiovými přenosy. V závěrečném programovém bloku věnovaném specifickým aplikacím zazní příspěvky o novinkách v letecké komunikaci a navigaci, o asistivních radiokomunikačních technologiích, o nových elektronických strukturách a materiálech využitelných v radiokomunikacích i o sledování elektromagnetického záření z vesmíru. První den konference bude uzavřen panelovou diskusí navazující na přednesené příspěvky a zaměřenou především na technické, provozní a regulační otázky televize, rozhlasu i elektronických sociálních sítí a výhledy do budoucna. Konference bude zpestřena několika firemními prezentacemi a výstavkami. Odborná garance: Ing. Pavel Gregora Organizační zajištění:
UNIT s.r.o., Gorkého 2573, 530 02 Pardubice tel., fax: 466 303 032, e-mail:
[email protected], www.unit.cz