Základy programování v Matlabu - část 8
Ing. Petr Pokorný, Ph.D.
Základy tvorby uživatelských aplikací
- Koverze LiveScript do jednoduché aplikace,
- Interaktivní tvorba aplikací pomocí App Designer,
- Manuální tvorba aplikací.
Již nedoporučovaným způsobem, i když stále fungujícím, je tvorba aplikací pomocí GUIDE. Interaktivní tvorba aplikací pomocí App Designer
App Designer je doporučovaný způsob tvorby GUI v Matlabu (App Designer). Pro úvod a základní pochopení ovládání App Designer doporučujeme shlédnout video:
Základní schéma tvorby GUI můžeme shrnout jako:
- Otevření nového projektu App Designer - záložky Apps / Design App.
- New / Blank App.
- Uložíme aplikaci do složky projektu.
- V poli Design View sestavíme požadované ovládací prvky aplikace (tlačítka, osy, posuvníky, ...).
- Upravíme vzhled prvků, případně můžeme změnit jejich názvy pro jasnější orientaci.
- Vygenerujeme a vytvoříme funkce Callback pro jednotlivé prvky (pravé tlačítko myši na prvek, Callbacks / Add callback), které mají spouštět akci. App Designer automaticky přesměruje uživatele do pole Code View, kde je možné programovat vlastnosti aplikace (App Designer využívá objektově orientovaný přístup).
- Spustíme aplikaci a ověříme její funkčnost.
- Sdílíme aplikaci pomocí MATLAB App, Web App nebo Desktop App (záložka Share).
Řešený příklad - změna rozlišení obrázku
Vytvořte jednoduchou aplikaci, která načte obrázek JPEG nebo PNG a uživatel bude moci redukovat rozlišení. Redukci rozlišení proveďte tak, že GUI bude obsahovat Edit Field (Numeric), kde uživatel bude moci zadat koeficient redukce od 1 do 100. Výpočet redukce proveďte po stiknutí tlačítka Process.
- Vytvoříme Blank App a uložíme pod vhodným názvem (main_gui.mlapp).
- V poli Design View vytvoříme jednotlivé prvky GUI vhodným způsobem - Image, Button, Edit Field (Numeric). Upravte názvy prvků a jejich nominální vlastnosti v Component Broswer / Inspector.
- Název aplikace lze změnit v záložce Identifiers u prvního komponentu.
- V poli Code View vytvoříme vhodné Private Properties (Property / Private Property), do kterých budou ukládány matice originálního obrazu a obrazu s redukovaným rozlišením a informace o tom, zda byl obraz správně načten: OriginalImage, ModifiedImage, BoolImageLoaded.
- V poli Design View přes pravé tlačítko myši vytvoříme callback pro tlačítko Load Image.
- V callback funkci zajistíme načtení obrazu. Využijeme např. funkci uigetfile. Poté zkontrolujeme, zda došlo k zadání nové cesty. Pokud ano, poté načteme obrázek do app.OriginalImage, app.ModifiedImage, zobrazíme v app.Image a nastavíme app.BoolImageLoaded na true.
- V poli Design View přes pravé tlačítko myši vytvoříme callback pro tlačítko Process. Pokud bude načtený obrázek (tj. app.BoolImageLoaded bude true), využijeme funkci imresize pro výpočet nového obrazu a aktualizujeme obrázek v app.Image.
- Pomocí Run otestujeme aplikaci.
- Po otestování upravíme App Details (název zobrazovaný uživateli, logo, ...) v záložce Share.
- Aplikaci můžeme zkompilovat jako MATLAB App (spustitelná přes prostředí Matlab v záložce Apps) nebo jako Standalone Desktop App (jako samostatná exe aplikace).
Příklady
Příklad 1
Doplňte vzorovou aplikaci o Listbox nebo Drop Down menu, ve kterém budete vybírat metodu výpočtu změny rozlišení pro funkci imresize (dle dokumentace lze použít metody nearest, bilinear, bicubic).