MATLAB程式设计入门篇GUIDE.ppt

上传人:小飞机 文档编号:5439230 上传时间:2023-07-07 格式:PPT 页数:42 大小:742.50KB
返回 下载 相关 举报
MATLAB程式设计入门篇GUIDE.ppt_第1页
第1页 / 共42页
MATLAB程式设计入门篇GUIDE.ppt_第2页
第2页 / 共42页
MATLAB程式设计入门篇GUIDE.ppt_第3页
第3页 / 共42页
MATLAB程式设计入门篇GUIDE.ppt_第4页
第4页 / 共42页
MATLAB程式设计入门篇GUIDE.ppt_第5页
第5页 / 共42页
点击查看更多>>
资源描述

《MATLAB程式设计入门篇GUIDE.ppt》由会员分享,可在线阅读,更多相关《MATLAB程式设计入门篇GUIDE.ppt(42页珍藏版)》请在三一办公上搜索。

1、MATLAB 程式設計入門篇GUIDE,張智星http:/www.cs.nthu.edu.tw/jang清大資工系 多媒體檢索實驗室,8-1 MATLAB第七版的 GUIDE簡介,GUIDE 是 Graphic User Interface Design Environment 的簡稱。它是一個 設計圖形使用者介面(Graphical User Interface,簡稱 GUI)的發展環境。使用 GUIDE 工具的好處如下:可以產生每一個控制物件的標準反應函式,使用者只要填入所需的指令或敘述。可以快速地拉出介面,具有所見即所得的性質。GUIDE 也有不盡人意之處 比較不適用於複雜的 GUI 介

2、面。無法將 GUI 應用程式集中於一個檔案。執行效率可能比較差一些。,8-1 MATLAB第七版的 GUIDE簡介,欲啟動 MATLAB 7.x 的 GUIDE,只需在命令視窗下輸入guide即可開啟 GUIDE 的主面版:,8-1 MATLAB第七版的 GUIDE簡介,在Create New GUI的頁面中,你可以選擇幾個樣版:Blank GUI(Default):空白樣版GUI with Uicontrols:含有 UI 控制物件(UI Controls)的樣版 GUI with Axes and Menu:含有圖軸和下拉選單的樣版Modal Question Dialog:含有對話窗的樣

3、版如果你已經有之前所設計的畫面,也可以點選Open Existing GUI,來開啟以前的檔案,如右圖所示:,8-1 MATLAB第七版的 GUIDE簡介,為了簡化說明,我們先回到Create New GUI頁面,並點選Blank GUI(Default)來開啟空白樣版,其畫面如下:,8-1 MATLAB第七版的 GUIDE簡介,在上述的畫面中,左邊是各種 UI 控制物件和圖軸的選單,選取之後,你就可以在中間空白部分,以滑鼠點選並拖放來擺置你所需要的 UI 控制物件或圖軸等。我們可以修改預設的 GUIDE 編輯面版,讓它更好用:如果嫌左邊的圖示太小,可以點選 File/Preference,並

4、點選Show names in component palette,就可以顯示左邊各個圖式的文字說明。如果要在面版周圍顯示尺規(Ruler),可以在下拉選單選擇 Tools/Grid and Rulers,然後再點選跳出視窗的Show rulers,就可以在面版周圍顯示尺規。,8-1 MATLAB第七版的 GUIDE簡介,經由上述的設定後,GUIDE 主面版顯示如下:,8-2 入門範例一,我們先改變 GUIDE 面版的大小(由拖放面版右下角的黑點來達成)接著在面版上放置兩個控制物件一個是拉霸(Slider)另一個是可編輯文字欄位(Edit Text),8-2 入門範例一,我們可以使用滑鼠右鍵來

5、點選任一個 UI 控制物件,並選取Inspect Properties,以改變其性質。以上面的拉霸為例,以滑鼠右鍵點選後,選取Inspect Properties,即可開啟性質檢視器(Property Inspector)。,8-2 入門範例一,在性質檢視器中,左邊是物件的性質,右邊則是此性質所對應的值,我們可以點選右邊來改變這些值。完成物件代號的設定後,我們就可以設定物件的反應命令。我們希望這些反應命令能夠使這個 GUI 應用程式達到下列功能:當使用者拖放拉霸時,能將拉霸的位置(預設值是介於 0 和 1 之間)顯示在文字欄位。文字欄位值被改變時,拉霸的位置能夠隨之改變。在 GUIDE 的環境

6、下,一個物件的反應命令都是由一個特定的函式來完成,這個函式就稱為反應函式,而函式名稱就是物件代號_Callback。,8-2 入門範例一,我們以滑鼠右鍵點選拉霸,並選取View Callbacks/Callback,即可開啟 MATLAB 程式編輯器。此程式編輯器會顯示反應命令必須加入的位置,拉霸的 Tag 是 mySlider,所以其反應函式是 mySlider_Callback(),所加進去的兩列敘述如下:第一列敘述抓出拉霸的位置,並轉成數值。第二列則將此數值設定為文字欄位的顯示文字。,position=num2str(get(handles.mySlider,Value);set(han

7、dles.myText,String,position);,8-2 入門範例一,8-2 入門範例一,使用相同的方式,我們也可以加入文字欄位的反應命令,其反應函式是 myText_Callback(),所加進去的兩列敘述如下:第一列抓出文字欄位的顯示文字,然後轉成數值。第二列將拉霸的位置設定成此數值。加入的位置如下所示:,value=str2double(get(handles.myText,String);set(handles.mySlider,Value,value);,8-2 入門範例一,8-2 入門範例一,按下 GUIDE 面版的工具列的三角形按鈕,即可開啟可使用的 GUI 介面 由於

8、所產生的程式碼並不在 MATLAB 的搜尋路徑中,因此會先跳出一個詢問視窗:,8-2 入門範例一,直接按下確定後就會跳出我們所設計的 GUI 介面如下:你可以直接移動拉霸,其位置就會顯示在文字欄位內;你也可以修改文字欄位的值,來指定拉霸的位置(收錄在本書光碟的 gui01.m 和 gui01.fig)。,8-2 入門範例一,在設計反應命令時,最重要的事,就是要能讓不同的 UI 控制物件都能存取其他物件以及相關資料,因為每一個 UI 控制物件的反應命令都是以函式的型式來進行。因此 GUIDE 在每一個反應函式內提供了一個結構變數 handles,以便提供資料的共通,可達到下列兩項功能:經由 ha

9、ndles 來存放或取用共通的資料。經由 handles 來取得每一個 UI 控制物件的性質。,8-2 入門範例一,例如,若要在某一個控制物件的反應函式內存放變數 A,可以加入下列敘述:如果要在另一個控制物件的反應函式裡面使用變數 A,只要加入下列敘述即可:,handles.myData=A;%將變數 A 存放在 handles 的 myData 欄位guidata(hObject,handles)%將新的 handles 存回整個 GUI 介面,A=handles.myData;,8-2 入門範例一,handles 本身也包含了同一個 GUI 介面下的所有控制物件,因此你可以在任一個反應函式

10、內取用每一個控制物件,如下:handles.mySlider:拉霸物件handles.myText:文字欄位物件如果整個 GUI 的名稱是 myGUI,那麼 handles.myGUI 就是指到整個 GUI 的圖形,因此若要關閉此視窗,也可以使用下列敘述:,delete(handles.myGUI),8-3 入門範例二,我們將改進前一個範例,在使用者輸入不合法的數值時,應用程式能夠回應錯誤訊息,並記錄錯誤的次數。我們可以經由 GUIDE 面版開啟 myGUI01,然後點選下拉式選單File/Save As將之儲存到 myGUI02。此時 GUIDE 會開啟 myGUI02.m,你必須在 myG

11、UI02_OpeningFcn()函式加入下列敘述:此敘述必須加在 guidata(hObject,handles);之前,以保證新的 handles 會被保留。,handles.errorCount=0;,8-3 入門範例二,接著修改文字欄位的反應命令,如下:,value=str2double(get(handles.myText,String);%判斷是否為介於 0 和 1 之間的純量數值if isnumeric(value)end,8-3 入門範例二,執行此應用程式,在第四次輸入不合法的數值後,畫面如下:本範例收錄在本書光碟內的 gui02.m 和 gui02.fig。,8-4 入門範例

12、三,在這個範例中,使用者可以使用下拉式選單來選取不同的聲音檔案,來顯示波形,並可播放聲音。首先,我們可以擺置一個圖軸和一些 UI 控制物件,如下圖:,8-4 入門範例三,8-4 入門範例三,接著,我們可以使用滑鼠右鍵來點選每一個 UI 控制物件,並選取Inspect Properties,以改變其性質,每個物件所改變的性質如下:,8-4 入門範例三,下一步我們要定義每個 UI 控制物件的反應命令,MATLAB 會在這些 UI 控制物件被點選時,同時呼叫每個物件所對應的反應命令。首先,我們以滑鼠右鍵點選 Close 按鈕,並選取View Callbacks/Callback 此程式編輯器會顯示反

13、應命令必須加入的位置,依本例而言,Close 按鈕的 Tag 是 closeButton,所以其反應命令也必須加在函數 closeButton_Callback 之內,8-4 入門範例三,加進去的命令是 close(gcbf),如下:,8-4 入門範例三,gcbf 代表產生此反應命令的視窗,因此 close(gcbf)即是代表關閉此 GUI 介面所在的視窗。提示:gcbf 的功能為傳回發號反應指令的視窗,這一類的指令相當好用,可整理如下:gcf:get current figure(取得目前視窗)gca:get current axes(取得目前圖軸)gco:get current objec

14、t(取得目前物件)gcbf:get callback figure(取得發號反應指令之視窗)gcbo:get callback object(取得發號反應指令之物件),8-4 入門範例三,對於下拉式選單,我們在 soundFile_Callback()函式內所加入的程式碼如下:,value=get(hObject,value);%取得此 UI 物件的選項switch value%依選項來載入聲音檔 case 1 load chirp.mat case 2 load handel.mat case 3 load laughter.matendplot(1:length(y)/Fs,y);%畫出聲

15、音的波形handles.y=y;%紀錄聲音訊號handles.Fs=Fs;%紀錄取樣頻率guidata(hObject,handles);%儲存將用於其他函式之 handles,8-4 入門範例三,對上述反應命令,說明如下:hObject 代表此下拉式選單的物件,因此value=get(hObject,value)即是此物件被選到的選項 依選項的不同,來載入不同的聲音檔案:chirp.mat(鳥叫聲)、handel.mat(歌聲)、laughter.mat(笑聲)。載入聲音資料後,y 就是聲音資料,而 Fs 是對應的取樣頻率。由於這兩個變數會在其他 UI 物件的反應命令被用到,因此我們將這兩個

16、變數儲存在 handles.y 和 handles.Fs,這個結構變數 handles 存在於每一個反應函式,其目的即是要提供在不同反應函式之間的資料互通。一旦將資料加入 handles,我們就必須使用 guidata(hOject,handles)來更新此 GUI 介面所擁有的 handles 變數。,8-4 入門範例三,對於Play Sound按鈕,我們在 playButton_Callback()函式內所加入的程式碼如下:我們先使用 isfield(handles,y)來確認 y 是不是 handles 的一個性質,若是,代表相關聲音資料已經儲存在 handles 變數內,因此我們就抓出

17、 y 和 Fs,並用 sound(y,Fs)來播放聲音訊號。,if isfield(handles,y)y=handles.y;Fs=handles.Fs;sound(y,Fs);end,8-4 入門範例三,儲存檔案並關閉 MATLAB 編輯器,然後按下 GUIDE 面版的工具列的三角形按鈕,即可開啟可使用的 GUI 介面如下:,8-4 入門範例三,若在下拉式選單選取 handel,即可畫出相關的歌聲波形,此時再按下Play Sound,即可聽到動聽的歌聲,(記得要開喇叭),相關畫面如下(本範例收錄在本書光碟內的 gui03.m 和 gui03.fig。):,8-5 入門範例四,在這個範例中,

18、我們要在視窗的最上方加入階層式的下拉式選單。首先,先開啟空白面版,加入圖軸,如下:,8-5 入門範例四,接著,點選View/View Callback/CreateFcn,即可開啟 MATLAB 編輯器。開啟後,請在 myGUI04_OpeningFcn()函式加入下列命令:此命令可以畫出 peaks 的三度空間的曲面。接著,我們要使用階層式的選單來控制此曲面的呈現方式。,peaks;,8-5 入門範例四,首先,點選Tools/Menu Editor即可秀出選單編輯器,如下:,8-5 入門範例四,此時你可以點選左上角的圖示 一次,就會產生一個新的選單點選此選單後,右邊就會出現很多相關的選項,我

19、們可將其中的Label改成我的選單,選單中的文字也會跟著改變,如下:,8-5 入門範例四,若要產生次選單,請點選圖示,依此方式即可產生階層式選單。若要刪除選項,點選垃圾桶圖示 即可進行刪除。最後的選單如下:,8-5 入門範例四,此時,再對每一個最底層選項修改相關的反應函式,只要點選右邊的View按鈕,就可以開啟 MATLAB 編輯器。在每個選項的反應函式所加入的命令如下表所示:,8-5 入門範例四,執行此應用程式,即可得到具有階層式下拉選單的 GUI,如下:本範例收錄在本書光碟內的 gui04.m 和 gui04.fig。,8-6 其它說明,GUIDE 也提供樹狀的物件瀏覽器(Object Browsers)。我們可以點選 GUIDE 的 View/Object Browser來開啟物件瀏覽器(Object Browsers)其外觀如下(以8-4的範例gui03.fig為例):我們可以在物件瀏覽器中點選任一個物件,即可開啟對應的性質檢視器。,8-6 其它說明,若要對齊物件,您可以點選 GUIDE 的Tools/Align Objects來開啟對齊功能,所開啟的視窗外觀如下:使用此對其功能前,你必須先選取多個物件,然後再點選這個選單,來進行左右對齊或是上下對齊的功能,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号