第6章MATLAB-GUI程序設(shè)計_第1頁
第6章MATLAB-GUI程序設(shè)計_第2頁
第6章MATLAB-GUI程序設(shè)計_第3頁
第6章MATLAB-GUI程序設(shè)計_第4頁
第6章MATLAB-GUI程序設(shè)計_第5頁
已閱讀5頁,還剩39頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

MATLAB與控制系統(tǒng)仿真實踐MATLABGUI程序設(shè)計初步2021/5/91MATLAB與控制系統(tǒng)仿真實踐,在線交流,有問必答引言MATLAB的GUI程序設(shè)計可以用兩種方式實現(xiàn),一種是借助GUI開發(fā)工具GUIDE,一種是利用m文件代碼構(gòu)建界面。采用GUIDE進行設(shè)計的方法所見即所得,直觀方便,很容易上手。本章主要介紹利用GUIDE方法進行設(shè)計的步驟。有興趣的用戶可以進一步了解學習全部利用m文件代碼構(gòu)建界面及執(zhí)行程序的方法。2021/5/92MATLAB與控制系統(tǒng)仿真實踐,北京航空航天大學出版社,2009.8.在線交流,有問必答本章主要內(nèi)容6.1GUI設(shè)計工具Guide簡介6.1.1GUIDE的啟動6.1.2GUI界面的創(chuàng)建6.2GUI程序設(shè)計示例6.2.1“HelloWorld”程序的設(shè)計6.2.2一個實用的GUI設(shè)計示例――控制系統(tǒng)典型環(huán)節(jié)的演示程序2021/5/93MATLAB與控制系統(tǒng)仿真實踐,北京航空航天大學出版社,2009.8.在線交流,有問必答6.1GUI設(shè)計工具Guide簡介2021/5/94MATLAB與控制系統(tǒng)仿真實踐,北京航空航天大學出版社,2009.8.在線交流,有問必答MATLAB提供了用戶圖形界面開發(fā)程序GUIDE,支持可視化編輯。它是一種基于事件或者說是事件驅(qū)動的程序(eventdriven),類似于方便易用的VisualBasic。2021/5/95MATLAB與控制系統(tǒng)仿真實踐,北京航空航天大學出版社,2009.8.在線交流,有問必答6.1.1GUIDE的啟動可以如下不同方式啟動GUIDE:1.在命令窗口提示符下輸入guide;2.在工具欄選打開;3.在Start菜單中選MATLAB>GUIDE(GUIBuilder);4.MATLABFile菜單中選New>GUI。2021/5/96MATLAB與控制系統(tǒng)仿真實踐,北京航空航天大學出版社,2009.8.在線交流,有問必答6.1.1GUIDE的啟動以上面任一種方式打開GUIDE后,即下圖的啟動界面。GUIDE啟動界面2021/5/97MATLAB與控制系統(tǒng)仿真實踐,北京航空航天大學出版社,2009.8.在線交流,有問必答6.1.2GUI界面的創(chuàng)建

用戶創(chuàng)建新的GUI,也可打開已有的GUI。創(chuàng)建界面時還可在模板基礎(chǔ)上進行,在選擇GUI模板時,啟動界面右側(cè)提供了預覽。以“GUIwithaxesandmenu”模板創(chuàng)建的GUI初始界面。2021/5/98MATLAB與控制系統(tǒng)仿真實踐,北京航空航天大學出版社,2009.8.在線交流,有問必答6.2GUI程序設(shè)計示例2021/5/99MATLAB與控制系統(tǒng)仿真實踐,北京航空航天大學出版社,2009.8.在線交流,有問必答概述

本節(jié)通過2個示例,演示MATLAB的GUI程序設(shè)計。一個是“HelloWorld”程序,作為初步了解。一個用來演示控制系統(tǒng)傳遞函數(shù)典型環(huán)節(jié)的響應曲線,具有一定實用性。2021/5/910MATLAB與控制系統(tǒng)仿真實踐,北京航空航天大學出版社,2009.8.在線交流,有問必答6.2.1“HelloWorld”程序的設(shè)計下面以一個類似于學習其它程序設(shè)計的第一個程序“HelloWorld”為例,講解GUIDE的有關(guān)知識。程序的目標是當按下按鈕時,由文本控件顯示“HelloWorld”。2021/5/911MATLAB與控制系統(tǒng)仿真實踐,北京航空航天大學出版社,2009.8.在線交流,有問必答顯示控件名稱的設(shè)置界面對界面左側(cè)的控件如果不夠熟悉的話,可以通過File>Preferences選項,選中“Shownamesincomponentpalette”

2021/5/912MATLAB與控制系統(tǒng)仿真實踐,北京航空航天大學出版社,2009.8.在線交流,有問必答GUI設(shè)計界面在顯示控制圖標的同時,還顯示控件名稱GUI設(shè)計界面2021/5/913MATLAB與控制系統(tǒng)仿真實踐,北京航空航天大學出版社,2009.8.在線交流,有問必答6.2.1“HelloWorld”程序的設(shè)計1.“HelloWorld”程序界面設(shè)計2.“HelloWorld”程序的設(shè)計3.程序測試運行2021/5/914MATLAB與控制系統(tǒng)仿真實踐,北京航空航天大學出版社,2009.8.在線交流,有問必答6.2.1“HelloWorld”程序的設(shè)計

——1.“HelloWorld”程序界面設(shè)計GUI設(shè)計中的界面設(shè)計部分比較容易。在窗口上添加一個按鈕控件(PushButton)和一個文本控件(StaticText)??梢噪p擊控件調(diào)出屬性編輯器進行其屬性的設(shè)置。2021/5/915MATLAB與控制系統(tǒng)仿真實踐,北京航空航天大學出版社,2009.8.在線交流,有問必答本例中,設(shè)按鈕控件的“String”屬性為“問候”,“Tag”屬性為“helloBt”,見右圖按鈕屬性設(shè)置2021/5/916MATLAB與控制系統(tǒng)仿真實踐,北京航空航天大學出版社,2009.8.在線交流,有問必答設(shè)置文本控件的“String”屬性為空,表示初始狀態(tài)下不顯示任何信息,“Tag”屬性為“helloStr”,為顯示清楚,設(shè)其“FontSize”屬性為“28”。見右圖文本控件屬性設(shè)置2021/5/917MATLAB與控制系統(tǒng)仿真實踐,北京航空航天大學出版社,2009.8.在線交流,有問必答6.2.1“HelloWorld”程序的設(shè)計

——1.“HelloWorld”程序界面設(shè)計需要注意的是,“Tag”屬性設(shè)置要唯一,因為“Tag”屬性是唯一標識控件的。至此,我們的界面設(shè)計工作完成。在保存時,會生成2個文件,一個是helloworld.fig,一個是helloworld.m。2021/5/918MATLAB與控制系統(tǒng)仿真實踐,北京航空航天大學出版社,2009.8.在線交流,有問必答6.2.1“HelloWorld”程序的設(shè)計

——1.“HelloWorld”程序界面設(shè)計此外可通過Tools>MenuEditor進行類似于Windows程序的菜單設(shè)計。編輯窗口見左圖,效果見右圖。菜單設(shè)計的編輯窗口菜單效果圖2021/5/919MATLAB與控制系統(tǒng)仿真實踐,北京航空航天大學出版社,2009.8.在線交流,有問必答6.2.1“HelloWorld”程序的設(shè)計

——2.“HelloWorld”程序的設(shè)計按照要求,我們可以給按鈕添加動作,即給它編寫一個回調(diào)函數(shù)(Callback)。右鍵單擊按鈕,選擇ViewCallbacks>Callback自動打開helloworld.m文件并指向該回調(diào)函數(shù)。根據(jù)需要為其添加語句。程序?qū)⒕浔痟andles的helloStr(即文本控件)“String”屬性設(shè)置為“HelloWorld”,即完成了設(shè)計要求。2021/5/920MATLAB與控制系統(tǒng)仿真實踐,北京航空航天大學出版社,2009.8.在線交流,有問必答6.2.1“HelloWorld”程序的設(shè)計

——2.“HelloWorld”程序的設(shè)計下面這段程序的意思是當點擊按鈕時,即由程序設(shè)置文本控件的“String”屬性值為“HelloWorld”。functionhelloBt_Callback(hObject,eventdata,handles)set(handles.helloStr,'String','HelloWorld!');2021/5/921MATLAB與控制系統(tǒng)仿真實踐,北京航空航天大學出版社,2009.8.在線交流,有問必答6.2.1“HelloWorld”程序的設(shè)計

——2.“HelloWorld”程序的設(shè)計注意回調(diào)函數(shù)的概念,它指的是在對象的某一個事件發(fā)生時,MATLAB內(nèi)部機制允許自動調(diào)用的函數(shù)。其幾個參數(shù)的意思分別為

hObject表示當前窗口的句柄;

eventdata表示事件代碼,為保留

handles是該窗口中的所有句柄的集合?;卣{(diào)函數(shù)有的是針對窗口而言的,有的是對具體控件而言的,學會回調(diào)函數(shù)的編寫有助于高效編寫MATLABGUI程序2021/5/922MATLAB與控制系統(tǒng)仿真實踐,北京航空航天大學出版社,2009.8.在線交流,有問必答6.2.1“HelloWorld”程序的設(shè)計

——3.程序測試運行在程序編輯窗口運行測試,或在命令窗口鍵入程序名稱“helloworld”,即可運行。如下圖:helloworld程序運行界面2021/5/923MATLAB與控制系統(tǒng)仿真實踐,北京航空航天大學出版社,2009.8.在線交流,有問必答6.2.1“HelloWorld”程序的設(shè)計

——3.程序測試運行注意:當不小心將helloworld.fig關(guān)掉后,再次編輯需要重新打開。其方法可以通過File>New>GUI>OpenExistingGUI來打開。如按照一般理解選擇File>Open項的話,只能打開其運行窗口而不可編輯。2021/5/924MATLAB與控制系統(tǒng)仿真實踐,北京航空航天大學出版社,2009.8.在線交流,有問必答6.2.2一個實用的GUI設(shè)計示例――控制系統(tǒng)典型環(huán)節(jié)的演示程序1.程序功能描述2.程序界面設(shè)計3.程序代碼設(shè)計4.程序測試運行2021/5/925MATLAB與控制系統(tǒng)仿真實踐,北京航空航天大學出版社,2009.8.在線交流,有問必答6.2.2一個實用的GUI設(shè)計示例――控制系統(tǒng)典型環(huán)節(jié)的演示程序1.程序功能描述進行控制系統(tǒng)典型環(huán)節(jié)的演示,包括了典型環(huán)節(jié)運行效果的演示與代碼的展示。也可以在代碼區(qū)輸入繪制曲線語句并通過點擊定制曲線按鈕繪制曲線。2021/5/926MATLAB與控制系統(tǒng)仿真實踐,北京航空航天大學出版社,2009.8.在線交流,有問必答6.2.2一個實用的GUI設(shè)計示例――控制系統(tǒng)典型環(huán)節(jié)的演示程序2.程序界面設(shè)計根據(jù)程序功能要求,添加不同控件,并設(shè)置控件各自的屬性。(1)Axes控件作用為顯示圖形,典型環(huán)節(jié)的階躍響應曲線及定制曲線都在此處進行顯示?!癟ag”屬性設(shè)為myAxes。(2)Panel控件用來盛放其它控件,這里盛放的是代碼區(qū)。“Tag”屬性設(shè)為uipanel?!癟itle”屬性設(shè)為空。2021/5/927MATLAB與控制系統(tǒng)仿真實踐,北京航空航天大學出版社,2009.8.在線交流,有問必答6.2.2一個實用的GUI設(shè)計示例――控制系統(tǒng)典型環(huán)節(jié)的演示程序(3)EditText控件用于輸入和顯示文本。此處作為代碼區(qū),主要作用為展示典型環(huán)節(jié)的代碼、輸入用戶定制的曲線代碼。“Tag”屬性設(shè)為:strCode?!癝tring”屬性設(shè)為:

Pleaseinputcommandforexample:x=0:0.1:4*pi;y=sin(x);

這為用戶定制曲線提供了一個例程。2021/5/928MATLAB與控制系統(tǒng)仿真實踐,北京航空航天大學出版社,2009.8.在線交流,有問必答6.2.2一個實用的GUI設(shè)計示例――控制系統(tǒng)典型環(huán)節(jié)的演示程序(4)StaticText控件作為標識,提示位于其下方的ListBox控件選項是進行典型環(huán)節(jié)的演示的?!癟ag”屬性設(shè)為txtDemo,“String”屬性設(shè)為典型環(huán)節(jié)演示。(5)ListBox控件類似于一組復選框,用戶可以從中選擇不同選項。“Tag”屬性設(shè)為:lstBox“String”屬性設(shè)為:比例環(huán)節(jié)慣性環(huán)節(jié)比例微分環(huán)節(jié)比例積分環(huán)節(jié)表示此列表共有4項內(nèi)容即4個典型環(huán)節(jié)可選。2021/5/929MATLAB與控制系統(tǒng)仿真實踐,北京航空航天大學出版社,2009.8.在線交流,有問必答6.2.2一個實用的GUI設(shè)計示例――控制系統(tǒng)典型環(huán)節(jié)的演示程序(6)PushButton控件表現(xiàn)為一個按鈕。本例中使用了兩個此控件。一個用于定制曲線的繪制。用戶在代碼區(qū)輸入繪制曲線語句后,點擊此按鈕進行曲線的繪制?!癟ag”屬性設(shè)為btnDraw,“String”屬性設(shè)為定制曲線,“TooltipString”屬性設(shè)為在代碼區(qū)中輸入曲線參數(shù),繪制任意曲線。這樣當用戶將光標置于按鈕之上時,會有相應的提示信息。一個用于關(guān)閉運行窗口。“Tag”屬性設(shè)為btnClose,“String”屬性設(shè)為關(guān)閉,“TooltipString”屬性設(shè)為關(guān)閉窗口。2021/5/930MATLAB與控制系統(tǒng)仿真實踐,北京航空航天大學出版社,2009.8.在線交流,有問必答6.2.2一個實用的GUI設(shè)計示例――控制系統(tǒng)典型環(huán)節(jié)的演示程序設(shè)定完成的界面草圖如右圖

程序界面設(shè)計草圖2021/5/931MATLAB與控制系統(tǒng)仿真實踐,北京航空航天大學出版社,2009.8.在線交流,有問必答6.2.2一個實用的GUI設(shè)計示例――控制系統(tǒng)典型環(huán)節(jié)的演示程序至此,本例所需的控件已設(shè)置完畢。在最初按照草圖添加部署了所有的控件后,往往不會排列得很整齊。此時可根據(jù)需要進行控件的排列。2021/5/932MATLAB與控制系統(tǒng)仿真實踐,北京航空航天大學出版社,2009.8.在線交流,有問必答6.2.2一個實用的GUI設(shè)計示例――控制系統(tǒng)典型環(huán)節(jié)的演示程序如在本例中,要將位于窗口右側(cè)的4個控件豎排整齊,則可在窗口選Tool>AlignObjects彈出的窗口中進行選擇,如圖。界面控件布局設(shè)置2021/5/933MATLAB與控制系統(tǒng)仿真實踐,北京航空航天大學出版社,2009.8.在線交流,有問必答6.2.2一個實用的GUI設(shè)計示例――控制系統(tǒng)典型環(huán)節(jié)的演示程序3.程序代碼設(shè)計根據(jù)要求,在選擇典型環(huán)節(jié)時需要設(shè)置回調(diào)函數(shù)。此外,對兩個按鈕控件也要設(shè)置回調(diào)函數(shù)?;卣{(diào)函數(shù)的生成在前一個例子已講過,這里不重復。這里只給出相應的代碼段供參考。2021/5/934MATLAB與控制系統(tǒng)仿真實踐,北京航空航天大學出版社,2009.8.在線交流,有問必答6.2.2一個實用的GUI設(shè)計示例――控制系統(tǒng)典型環(huán)節(jié)的演示程序(1)定制曲線按鈕的回調(diào)函數(shù)functionbtnDraw_Callback(hObject,eventdata,handles)trystr=char(get(handles.strCode,'String'));%將在代碼區(qū)輸入的代碼轉(zhuǎn)換成數(shù)組

str0=[];forii=1:size(str,1)%對str的每行操作

str0=[str0,deblank(str(ii,:))];%將str第ii行去掉空格后作為向量str0的一個元素endeval(str0);%執(zhí)行代碼axes(handles.myAxes);%將myAxes設(shè)為當前坐標系plot(x,y);%繪制曲線catcherrordlg('請重新檢查輸入數(shù)據(jù)!');%如有數(shù)據(jù)錯誤,捕獲并給出提示end2021/5/935MATLAB與控制系統(tǒng)仿真實踐,北京航空航天大學出版社,2009.8.在線交流,有問必答6.2.2一個實用的GUI設(shè)計示例――控制系統(tǒng)典型環(huán)節(jié)的演示程序(2)典型環(huán)節(jié)列表框的回調(diào)函數(shù)functionlstBox_Callback(hObject,eventdata,handles)v=get(handles.lstBox,'value');%取出所選項的值%對不同選項,進行對應環(huán)節(jié)曲線的繪制和代碼的展示switchvcase1,%比例環(huán)節(jié)

str1='nump=3;denp=1;';%繪制比例環(huán)節(jié)曲線的代碼

str2='t=0:0.1:10;';str3='[y,t,x]=step(nump,denp,t);';%將代碼作為數(shù)組賦值給代碼區(qū)的String屬性,即展示代碼

set(handles.strCode,'String',char(str1,str2,str3));%將所選環(huán)節(jié)名稱顯示在panel控件上

set(handles.uipanel,'Title','比例環(huán)節(jié)');case2,%慣性環(huán)節(jié)

str1='numg=1;deng=[0.21];';str2='t=0:0.1:10;';str3='[y,t,x]=step(numg,deng,t);';set(handles.strCode,'String',char(str1,str2,str3));set(handles.uipanel,'Title','慣性環(huán)節(jié)')

2021/5/936MATLAB與控制系統(tǒng)仿真實踐,北京航空航天大學出版社,2009.8.在線交流,有問必答6.2.2一個實用的GUI設(shè)計示例――控制系統(tǒng)典型環(huán)節(jié)的演示程序case3,%比例微分

str1='K=2;T=0.1;N=5;numpd=[K*TK];denpd=[T/N1];';

str2='t=0:0.1:10;';str3='[y,t,x]=step(numpd,denpd,t);';set(handles.strCode,'String',char(str1,str2,str3));set(handles.uipanel,'Title','比例微分環(huán)節(jié)');case4,%比例積分

str1='K=4;T=0.2;numpi=[K*TK];denpi=[T0];';str2='t=0:0.1:10;';str3='[y,t,x]=step(numpi,denpi,t);';set(handles.strCode,'String',char(str1,str2,str3));set(handles.uipanel,'Title','比例積分環(huán)節(jié)');end%axes(handles.myAxes);%將myAxes設(shè)為當前坐標系btnDraw_Callback(hObject,eventdata,handles)%調(diào)用定制曲線按鈕的回調(diào)函數(shù)進行曲線繪制2021/5/937MATLAB與控制系統(tǒng)仿真實踐,北京航空航天大學出版社,2009.8.在線交流,有問必答6.2.2一個實用的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論