Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Počítače a programování 2 pro obor EST BPC2E PŘEDNÁŠKA 11

Podobné prezentace


Prezentace na téma: "Počítače a programování 2 pro obor EST BPC2E PŘEDNÁŠKA 11"— Transkript prezentace:

1 Počítače a programování 2 pro obor EST BPC2E PŘEDNÁŠKA 11
OSNOVA: GUI v Matlabu – úvod Příklady GUI v Matlabu Jiří Šebesta Ústav radioelektroniky, FEKT VUT v Brně

2 GUI v Matlabu – úvod (1/7) Grafické uživatelské rozhraní (GUI) v Matlabu umožňuje komfortní ovládání matlabovské aplikace Princip je obdobný jako u Microsoft Visual Studia (sestavení grafické podoby okna – formuláře a zpracování událostí), jen s omezením na několik grafických objektů: statický text editační text tlačítko rádiové tlačítko zaškrtávátko pop-up menu listbox graf

3 GUI v Matlabu – úvod (2/7) Tvorba GUI se spouští příkazem guide ve work space. Prázdné okno představuje formulář, do kterého se vkládají grafické objekty (na obrázku je příklad všech zákl. objektů):

4 GUI v Matlabu – úvod (3/7) U každého grafického objektu lze definovat vlastnosti (vizuální podobu a další parametry) pomocí Property Inspectoru (vyvolá se klikem pravého tlačítka myši na objekt). Parametr Tag reprezentuje jméno objektu.

5 GUI v Matlabu – úvod (4/7) Formulář okna se ukládá je soubor xxx.fig.
Současně se ukládá soubor stejného jména jako m-file xxx.m, kde jsou automaticky připraveny funkce: jménoobjektu_CreateFcn – volána při vytváření objektu jménoobjektu_Callback – volána při události na objektu (vždy jen jedna typická událost, např. klik u tlačítek, posuv šoupátkem u lišty apod.) Do těchto funkcí lze vkládat matlabovský kód a definovat chování aplikace.

6 GUI v Matlabu – úvod (5/7) Pro nastavení parametru objektu (mimo tvorbu GUI) se využívá funkce set: set(objekt, parametr, hodnota) objekt může být reprezentován: hObject – aktuálně fokusovaný objekt (např. ve funkci Callback pro daný objekt bude fokusovaný právě tento objekt) handles.jmenoobjektu – objekt, který není fokusován (všechny vytvořené objekty ve formuláři jsou položkami struktury handles) Příklad: set(handles.My_object,'Visible','on'); Nastaví viditelnost objektu My_object

7 GUI v Matlabu – úvod (6/7) Pro získání parametru objektu (mimo tvorbu GUI) se využívá funkce get: x = get(objekt, parametr) objekt může být reprezentován stejně jako pro funkci set Automaticky vytvořená funkce jménoprojektu_OpeningFcn() se volá při otvírání formuláře a může být použita pro inicializační definice. varargout = jménoprojektu_OutputFcn se volá při zavírání formuláře a může být použita pro předávání parametrů (výsledků).

8 GUI v Matlabu – úvod (7/7) Pro vstup parametrů do matalbovské aplikace s GUI lze použít proměnnou varargin při volání funkce se jménem projektu varargout = jménoprojektu(varargin) Kompletní průvodce tvorbou GUI v Matlabu je v příloze (soubory k přednášce)

9 Příklady GUI v Matlabu (1/7)
Příklad: Sestavte matlabovské GUI se třemi šoupacími lištami, které představují úroveň zastoupení barvy RGB, která se automaticky zobrazí ve třech statických textech a samotná barva jako barva pozadí tlačítka. Vizuální podoba a jména objektů

10 Příklady GUI v Matlabu (2/7)
Při otevírání formuláře budou všechny šoupací lišty nastaveny do středu, hodnoty barev budou 50 (procent) a barva bude střední šedá (definujeme v OpeningFcn()) % --- Executes just before BPC2E_Ex145 is made visible. function BPC2E_Ex145_OpeningFcn(hObject, eventdata, handles, varargin) R_val = 50; G_val = 50; B_val = 50; set(handles.R_Slider,'Value', R_val); set(handles.G_Slider,'Value', G_val); set(handles.B_Slider,'Value', B_val); set(handles.Txt_R,'String', R_val); set(handles.Txt_G,'String', G_val); set(handles.Txt_B,'String', B_val); set(handles.PB,'BackgroundColor', [R_val/100 G_val/100 B_val/100]);

11 Příklady GUI v Matlabu (3/7)
Při posunutí šoupátka se volá příslušná funkce Callback(), do které implementujeme kód pro načtení hodnot nastavení šoupa-cích lišt, nastavení statického textu pro dané šoupátko (se kterým bylo posouváno) a definuje se a vloží nová barva pozadí tlačítka (příklad pro změnu zastoupení červené barvy) % --- Executes on slider movement. function R_Slider_Callback(hObject, eventdata, handles) R_val = round(get(hObject,'Value')); G_val = round(get(handles.G_Slider,'Value')); B_val = round(get(handles.B_Slider,'Value')); set(handles.Txt_R,'String',R_val); set(handles.PB,'BackgroundColor', [R_val/100 G_val/100 B_val/100]); Příklad: BPC2E_Ex145.fig a BPC2E_Ex145.m

12 Příklady GUI v Matlabu (4/7)
Příklad: Sestavte matlabovské GUI pro zobrazení funkce z=x*sin(x)+y*sin(y) s výběrem typu grafu – konturový, povrchový a síťový. Vizuální podoba a jména objektů

13 Příklady GUI v Matlabu (5/7)
Při otevírání formuláře budou se vypočtou matice X a Y pro mřížku a Z jako závislá proměnná na X a Y pro zadanou funkci. Protože se nacházíme uvnitř funkce X, Y a Z musí být specifikovány jako globální proměnné – viz kód function BPC2E_Ex146_OpeningFcn(hObject, eventdata, handles, varargin) handles.output = hObject; guidata(hObject, handles); global X Y Z [x,y] = meshgrid(-4*pi:0.2*pi:4*pi); Z = x.*sin(x)+y.*sin(y); X = x(1,:); Y = y(:,1); set(handles.Out_Axes,'Visible','off'); Graf bude po spuštění projektu neviditelný

14 Příklady GUI v Matlabu (6/7)
Pro aktivaci vykreslení vybraného typu grafu je použito tlačítko Btn_Plot, proto ve funkci Btn_Plot_Callback()jsou nejprve aktivovány globální proměnné X, Y a Z s výsledky a aktivována viditelnost grafu. Následuje fokusace grafu Out_Axes a příkaz cla pro vyčištění starých parametrů grafu. Do proměnné index_popup se uloží vybraný typ grafu (jako index pořadí řetězce v pop-up menu PM). function Btn_Plot_Callback(hObject, eventdata, handles) global X Y Z set(handles.Out_Axes,'Visible','on'); axes(handles.Out_Axes); cla; index_popup = get(handles.PM, 'Value');

15 Příklady GUI v Matlabu (7/7)
V poslední části se pomocí switch-case vybere a vytiskne příslušný typ grafu. Následuje společný kód pro všechny grafy. switch index_popup case 1 contour(X,Y,Z); view(0, 90) case 2 surf(X,Y,Z); view(135, 55) case 3 mesh(X,Y,Z); end grid on title('z=x*sin(x)+y*sin(y)') Příklad: BPC2E_Ex146.fig a BPC2E_Ex146.m

16 Téma následující přednášky
DĚKUJI ZA POZORNOST Téma následující přednášky Rozbor zápočtového testu


Stáhnout ppt "Počítače a programování 2 pro obor EST BPC2E PŘEDNÁŠKA 11"

Podobné prezentace


Reklamy Google