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

Přednáška 11 28.4.2014 Jiří Šebesta

Embed Size (px)

DESCRIPTION

Počítače a programování 2. Přednáška 11 28.4.2014 Jiří Šebesta. TÉMA – GUI v MATLAB u. GUI v Matlabu - ú vod Příklady GUI v Matlabu. G rafické uživatelské rozhraní (GUI) v Matlabu umožňuje komfortní ovládání matlabovské aplikace - PowerPoint PPT Presentation

Citation preview

Page 1: Přednáška  11 28.4.2014 Jiří Šebesta

OSNOVA:a) GUI v Matlabu – úvod

b) Příklady GUI v Matlabu

Jiří ŠebestaJiří ŠebestaÚstav radioelektroniky, FEKT VUT v BrněÚstav radioelektroniky, FEKT VUT v Brně

Počítače a programování 2 pro obor ESTBPC2E

PŘEDNÁŠKA 11

Page 2: Přednáška  11 28.4.2014 Jiří Šebesta

GUI v Matlabu – úvod (1/7)GUI v Matlabu – úvod (1/7)

Grafické uživatelské rozhraní (GUI) v Matlabu umožňuje komfortní ovládání matlabovské aplikacePrincip 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

Page 3: Přednáška  11 28.4.2014 Jiří Šebesta

GUI v Matlabu – úvod (2/7)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ů):

Page 4: Přednáška  11 28.4.2014 Jiří Šebesta

GUI v Matlabu – úvod (3/7)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.

Page 5: Přednáška  11 28.4.2014 Jiří Šebesta

GUI v Matlabu – úvod (4/7)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.

Page 6: Přednáška  11 28.4.2014 Jiří Šebesta

GUI v Matlabu – úvod (5/7)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

Page 7: Přednáška  11 28.4.2014 Jiří Šebesta

GUI v Matlabu – úvod (6/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.

•Automaticky vytvořená funkce varargout = jménoprojektu_OutputFcnse volá při zavírání formuláře a může být použita pro předávání parametrů (výsledků).

Page 8: Přednáška  11 28.4.2014 Jiří Šebesta

GUI v Matlabu – úvod (7/7)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)

Page 9: Přednáška  11 28.4.2014 Jiří Šebesta

Příklady GUI v Matlabu (1/Příklady GUI v Matlabu (1/77))

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ů

Page 10: Přednáška  11 28.4.2014 Jiří Šebesta

Příklady GUI v Matlabu (2/Příklady GUI v Matlabu (2/77))

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]);

Page 11: Přednáška  11 28.4.2014 Jiří Šebesta

Příklady GUI v Matlabu (3/Příklady GUI v Matlabu (3/77))

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

Page 12: Přednáška  11 28.4.2014 Jiří Šebesta

Příklady GUI v Matlabu (4/Příklady GUI v Matlabu (4/77))

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ů

Page 13: Přednáška  11 28.4.2014 Jiří Šebesta

Příklady GUI v Matlabu (5/Příklady GUI v Matlabu (5/77))

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ý

Page 14: Přednáška  11 28.4.2014 Jiří Šebesta

Příklady GUI v Matlabu (6/Příklady GUI v Matlabu (6/77))

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 Zset(handles.Out_Axes,'Visible','on');axes(handles.Out_Axes);cla;index_popup = get(handles.PM, 'Value');

Page 15: Přednáška  11 28.4.2014 Jiří Šebesta

Příklady GUI v Matlabu (Příklady GUI v Matlabu (77//77))

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); view(135, 55)endgrid ontitle('z=x*sin(x)+y*sin(y)')

Příklad: BPC2E_Ex146.fig a BPC2E_Ex146.m

Page 16: Přednáška  11 28.4.2014 Jiří Šebesta

Téma následující přednášky

– Rozbor zápočtového testu

DĚKUJI ZA POZORNOST