Počítačové modelování dynamických systémů 6. cvičení katedra elektrotechniky a automatizace Miloslav LINDA
GUI - systém na tvorbu uživatelského rozhranní - možnost užití objektů jako jsou tlačítka, text boxy, edit boxy, list boxy, popup menu a kreslící plochy - uživatelské rozhranní je tvořeno m-filem, který má v kódu deklarované objekty a události, či funkce s nimi spojené
GUI návrhové zobrazení program
GUI - v m-file - užití příkazu uicontrol, který definuje vlastnosti grafických objektů - typické vlastnosti objektů units, position, style, string, value, fontsize, fontweight, foregroundcolor, callback, tag …. - jednotlivé vlastnosti jsou párové a typu string nebo value, podle toho se mění - např.: uicontrol('style','push','string','ahoj', 'fontsize',10)
GUI - v m-file h1=uicontrol('units','normalized','position',[0.55 0.5 0.45 0.15], ... 'style','push','string','start simulace','fontsize',10,'fontweight','bold', ... 'foregroundcolor','blue','callback', 'klik start','tag','start'); - h1 je handle grafického objektu, tedy proměnná jednoznačně určující objekt - units-normalized rozměrový převod z pixelů na x(0-1) a y(0-1) - style definuje styl objektu (push, toggle, edit, text, slider, frame, list, popup, axes, radio, check) - callback definuje vykonávanou funkci pro rozhovací strukturu case její zápis je 'callback','názevprogramu casenávěští'
GUI - v m-file h1=uicontrol('units','normalized','position',[0.55 0.5 0.45 0.15], ... 'style','push','string','start simulace','fontsize',10,'fontweight','bold', ... 'foregroundcolor','blue','callback', 'klik start','tag','start'); - tag určuje handle, protože v m-filu nefunguje přiřazení do proměnné - foregroundcolor, backgroundcolor definuje barvu textu a pozadí zadání buď maticově nebo názvem barvy blue, black užití interaktivního výběru barvy uisetcolor
GUI - v m-file - pokud máme vytvořené objekty v kreslícím plátně figura, lze v programu měnit jakoukoli jejich vlastnost, měněné vlastnosti jsou např. enable, visible - změna vlastností příkazem set set(findobj('tag','push_1'),'enable','off') set(findobj('tag','text_1'),'string','ahoj') set(findobj('tag','edit_1'),'string','8') set(h1,'string','8')
GUI - v m-file - získání dat z objektů příkazem get f_prom=get(findobj('tag','text_1'),'string') a_prom=get(findobj('tag','check_1'),'value') get(h1,'string') - export proměnné z GUI do Workspace assignin('base','a_prom',a_prom)
GUI - v m-file - zdrojový kód aplikace function klik(input) if nargin==0 h=figure('position',[400 400 250 150], ... 'name','klikačka', 'numbertitle','off','menubar','none','resize','off', 'tag','pozadi'); h1=uicontrol('units','normalized','position',[0.55 0.5 0.45 0.15], ... 'style','push','string','start simulace','fontsize',10,'fontweight','bold', ... 'foregroundcolor','blue','callback', 'klik start','tag','start'); else switch(input) case ('start') script tlačítka end
GUI a Simulink - využití možnosti nastavení a ovládání modelu z grafické aplikace GUI - export parametrů, ovládání v real time - nastavení start a stop time simulace pro určité aplikace v rámci jednoho modelu
GUI a Simulink - příkazy pro nastavení simulace set_param(gcs,'stoptime','Inf') set_param(gcs,'stoptime','100') set_param(gcs,'simulationcommand','start') set_param(gcs,'simulationcommand','stop') + další z nabídky simulačních parametrů
GUI a Simulink - příkazy pro práci s daty set_param('klikaci/Constant1','Value',a_prom) b_prom=get_param('klikaci/Constant1','Value') + další z nabídky proměnných objektů (constant, gain …) gui_a=get_param('klikaci/Constant1','Value'); %m-file pro změnu proměnné v objektu constant z 0 na 1 a=str2num(a); a=~a; a=num2str(a); set_param('klikaci/Constant','Value',a);
GUI a Simulink set_param('sys', 'Solver', 'ode15s', 'StopTime', '3000') set_param('sys/Zesileni', 'Gain', '1000') set_param('sys/Zero-Pole','Zeros','[2 4]','Poles','[1 2 3]') set_param('pidreg/PID Controller','P','1'); set_param('pidreg/PID Controller','I','0.5'); set_param('pidreg/Transfer Fcn','Numerator','[2]'); set_param('pidreg/Transfer Fcn','Denominator','[1 3 1]'); % spuštění simulace [t,x] = sim('pidreg'); % zavření všech modelů bdclose('all');
GUI a Simulink Příklad provázání Simulinku s GUI aplikací - možnost spouštění a zastavení simulace - předávání dat do Simulinku - bitové ovládání přepínačů v modelu - volání scriptu v Simulinku přes Block properties, záložka Callback a Open Fcn
GUI - naprogramovaný program lze kompilovat do exe souboru, který lze spustit i na počítači, na kterém není Matlab a je volně šiřitelný - k tomu slouží nástroj deploytool
Images - jelikož je Matlab maticový program, tak se i obrázky načítají jako maticové proměnné - jeden ze způsobů jak načíst obrázek je příkazem k importování dat, dalším je imread - důležitou věcí je aby měl obrázek odpovídající barevný formát ke zpracování, budeme pracovat s formátem ve stupních šedi
Images příkazy imread(‘picture.jpg’) - načtení obrázku z aktuálního pracovního adresáře Matlabu imagesc(X) - vykreslení obrázku, obdobně jako graf, s osami imshow(X) - zobrazení obrázku
Images příkazy rgb2gray(RGB) - převod barevného formátu RGB obrázku na gray imadd(X,Y) imadd(X,50) - přičtení obrázku k obrázku immultiply(X, 1.2) - změna jasu obrázku
Images příkazy binary = X > 100 - převod obrázku ve stupních šedi na BW podle parametru [černá(0), bílá(1)] bwareaopen(X,100) - odstranění malých objektů z obrázku, podle podmínky
Images příkazy bwselect(X,c,r,n) - výběr části obrázku z výchozího obrázku bwfill(X,c,r,n) - vyčistění části obrázku bwmorph(X,'remove') bwmorph(X,'skel',Inf) - obrys objektu v obrázku
Images příkazy bwperim(X,8) - obrys polí v obrázku
zatím konec, možná ještě něco přidám