Table of Contents

Základy programování v Matlabu - část 8

Ing. Petr Pokorný, Ph.D.

Základy tvorby uživatelských aplikací

MATLAB umožňuje velmi snadnou tvorbu grafických uživatelských aplikací (GUI). V současnosti existují tři doporučované nástroje pro tvorbu aplikací (viz Create apps with graphical user interfaces in MATLAB):
  1. Koverze LiveScript do jednoduché aplikace,
  2. Interaktivní tvorba aplikací pomocí App Designer,
  3. 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:
Getting Started with App Designer.
Základní schéma tvorby GUI můžeme shrnout jako:
  1. Otevření nového projektu App Designer - záložky Apps / Design App.
  2. New / Blank App.
  3. Uložíme aplikaci do složky projektu.
  4. V poli Design View sestavíme požadované ovládací prvky aplikace (tlačítka, osy, posuvníky, ...).
  5. Upravíme vzhled prvků, případně můžeme změnit jejich názvy pro jasnější orientaci.
  6. 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).
  7. Spustíme aplikaci a ověříme její funkčnost.
  8. Sdílíme aplikaci pomocí MATLAB App, Web App nebo Desktop App (záložka Share).
Přehled komponentů možných k použití v GUI je k nalezení v Component Gallery.

Ř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.
  1. Vytvoříme Blank App a uložíme pod vhodným názvem (main_gui.mlapp).
  2. 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.
  3. Název aplikace lze změnit v záložce Identifiers u prvního komponentu.
  4. 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.
  5. V poli Design View přes pravé tlačítko myši vytvoříme callback pro tlačítko Load Image.
  6. 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.
  7. 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.
  8. Pomocí Run otestujeme aplikaci.
  9. Po otestování upravíme App Details (název zobrazovaný uživateli, logo, ...) v záložce Share.
  10. 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).