170 likes | 299 Views
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
E N D
Počítače a programování 2 Přednáška 11 28.4.2014 Jiří Šebesta
TÉMA – GUI vMATLABu GUI v Matlabu - úvod Příklady GUI v Matlabu
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 GUI v Matlabu – úvod (1/7)
Tvorba GUI se spouští příkazemguidevework 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ů): GUI v Matlabu – úvod (2/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. GUI v Matlabu – úvod (3/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. GUI v Matlabu – úvod (4/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 struktůry handles) • Příklad: • set(handles.My_object,'Visible','on'); • Nastaví viditelnost objektu My_object GUI v Matlabu – úvod (5/7)
Pro získání parametru objektu (mimo tvorbu GUI) se využívá funkce set: 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_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ů). GUI v Matlabu – úvod (6/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) GUI v Matlabu – úvod (7/7)
1) 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. Příklady GUI v Matlabu (1/7) Vizuální podoba a jména objektů
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() ) Příklady GUI v Matlabu (2/7) % --- Executes just before Ex139 is made visible. function Ex139_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]);
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) Příklady GUI v Matlabu (3/7) % --- 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: Ex139.fig a Ex139.m
1) Sestavte matlabovské GUI pro zobrazení funkce z=x*sin(x)+y*sin(y) s výběrem typu grafu – konturový, povrchový a síťový. Příklady GUI v Matlabu (4/7) Vizuální podoba a jména objektů
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 Příklady GUI v Matlabu (5/7) function Ex140_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ý
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). Příklady GUI v Matlabu (6/7) 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');
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. Příklady GUI v Matlabu (7/7) switchindex_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) end grid on title('z=x*sin(x)+y*sin(y)') … Příklad: Ex140.fig a Ex140.m
TÉMA NÁSLEDUJÍCÍ PŘEDNÁŠKY Rozbor zápočtového testu DĚKUJI ZA POZORNOST