matlab實(shí)驗(yàn) (6)
《matlab實(shí)驗(yàn) (6)》由會員分享,可在線閱讀,更多相關(guān)《matlab實(shí)驗(yàn) (6)(15頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、 實(shí)驗(yàn)六 MATLAB 圖形用戶界面制作和仿真 一、實(shí)驗(yàn)?zāi)康模? 1、了解句柄圖形對象 2、了解GUI的基本知識 3、掌握創(chuàng)建GUI對象的方法 4、GUI編程練習(xí) 二、相關(guān)知識 1、句柄圖形對象 (1) 圖形框架窗口對象(Figure) ? 繪制圖形的圖形框架窗口對象 ? 核心(Core)對象 ? 繪圖(Plot )對象 ? 注釋對象 (2) 圖形對象屬性的獲取和設(shè)置 ? get函數(shù) ? set函數(shù) ? 默認(rèn)屬性 (3) 圖形對象的操作 ? 查找對象 ? 堆積次序 2. GUI的基本知識 (1)啟動GUI (2)布局
2、(Layout)編輯器 (3)GUIDE模板介紹 (4)運(yùn)行GUI 3. 創(chuàng)建GUI對象 (1)GUI窗口的布局 ? 改變GUI窗口的大小 ? 控件的添加和對齊 (2) GUI控件的屬性控制 ? 屬性查看器的顯示 ? 一些常用的屬性 (3)菜單的添加 ? 主菜單的創(chuàng)建 ? 彈出式菜單的的創(chuàng)建 4. GUI 編 程 ? GUI的M文件 – 與句柄結(jié)構(gòu)共享數(shù)據(jù) – M文件中的函數(shù)和響應(yīng) ? 控件的使用 ? 使用句柄結(jié)構(gòu)進(jìn)行GUI數(shù)據(jù)操作 三、上機(jī)練習(xí) (一)、練習(xí)書上的例子 啟動GUIDE 啟動GUIDE
3、有三種方法:在MATLAB操作桌面,單擊File→New→GUI選項(xiàng)、單擊工具欄上的圖標(biāo) 、在命令窗口輸入guide后回車,出現(xiàn)GUIDE Quick Start對話框。 Create new GUI選項(xiàng)卡包含四個初始化設(shè)計模板:Blank GUI(Default)創(chuàng)建一個空白的GUI、1) GUI with Uicontrols創(chuàng)建一個帶有控制組件的GUI、GUI with Axes and Menu創(chuàng)建一個帶有軸對象和菜單的GUI、Model Question Dialog創(chuàng)建一個問題對話框。 2)Open Existing GUI選項(xiàng)卡含有一個Recenty opened fi
4、les(最近打開過的GUI文件)選擇框。 選擇Blank GUI(Default)模板,單擊【OK】按鈕,打開GUI設(shè)計窗口。 單擊設(shè)計窗口File→Preferences選項(xiàng),打開Preferences對話框,選中Show name in component palette選項(xiàng),在組件面板中顯示控件名稱。 設(shè)計窗口的右邊為版面設(shè)計區(qū),向版面設(shè)計區(qū)添加控件,可以用鼠標(biāo)從組件面板拖動來完成版面設(shè)計完成后,單擊工具欄的運(yùn)行按鈕,即可運(yùn)行GUI。 首次運(yùn)行 GUI 時,系統(tǒng)會提示存盤。存盤完成后,系統(tǒng)會打開運(yùn)行界面窗口和M文件編輯窗口,同時生成兩個文件:一個是fig文件,
5、包含對GUI及其組件的完整描述;另一個是M文件,包含GUI的程序代碼和組件回調(diào)事件代碼。 控件介紹: (1)命令按鈕(Push Button) (2)開關(guān)按鈕(Toggle Button) (3)單選按鈕(Radio Button) (4)核選框(Check Box) (5)滑動條(Slider) (6)可編輯文本框(Edit Text) (7)靜態(tài)文本框(Static Text) (8)彈出式菜單(Pop-Up Menu) (9)列表框(Listbox) (10)坐標(biāo)軸(Axes) (11)面板(Panel) (12)按鈕組(Button Group) (13)
6、ActiveX控件(ActiveX Control) 對象屬性檢查器設(shè)置 : 利用對象屬性檢查器,可以查看每個對象的屬性值,也可以修改、設(shè)置對象的屬性值。 選中某個控件,單擊GUI設(shè)計窗口工具欄上 按鈕、單擊View→Property Inspector子菜單,直接雙擊控件,都可以打開對象屬性檢查器。 界面制作包括界面設(shè)計和程序?qū)崿F(xiàn),一般制作步驟如下: ? 分析界面所要求實(shí)現(xiàn)的主要功能,明確設(shè)計任務(wù); ? 界面設(shè)計,確定界面所用部件及其屬性; ? 回調(diào)函數(shù)設(shè)置; ? 對實(shí)現(xiàn)的功能進(jìn)行逐項(xiàng)調(diào)試檢查; ? 對界面部件進(jìn)行裝飾,使其更人性化。 例子練習(xí): 例1:根據(jù)
7、上面的界面制作步驟,制作一個界面,點(diǎn)擊不同控件能分別顯示sin(x)和tan(x)。 第一步,題意分析 本例子需要有一個坐標(biāo)軸(Axes);要三個命令按鈕控件分別控制sin(x)和tan(x)顯示以及一個停止按鈕。 第二步,界面設(shè)計 (1)新建一個GUI界面 在MATLAB操作桌面上,單擊File → New → GUI選項(xiàng),選擇Blank GUI(Default)模板,單擊“OK”按鈕,打開GUI設(shè)計窗口。 (2)添加控件 用鼠標(biāo)從GUI設(shè)計窗口的組件面板中拖動坐標(biāo)軸(Axes),3個命令按鈕(PushButton)控件。 (3)排列控件 選中兩個或兩個以上需要
8、排列的控件,單擊設(shè)計窗口的工具或單擊Tools→Align Objects菜單項(xiàng),打開排列工具對話框, (4)設(shè)置控件屬性 雙擊需要屬性設(shè)置的控件,打開對象屬性檢查器,設(shè)置控件屬性。 “y=sin(x)”按鈕:String屬性修改為y=sin(x),F(xiàn)ontUnits屬性改為normalized,F(xiàn)ontWeight屬性改為bold,F(xiàn)ontSize屬性改為0.3,其他為默認(rèn)值。 “y=tan(x)”編輯文本:String屬性修改為y=tan(x),其他屬性同上。 “STOP”按鈕:String屬性修改為“stop”,Tag屬性修改為“stop”,其他同上。 控件設(shè)置效果如圖所示
9、: 第三步,回調(diào)函數(shù)設(shè)置 在“求零極點(diǎn)”按鈕上點(diǎn)擊右鍵,下拉菜單選擇View CallBacks → CallBack(回調(diào)函數(shù)), 在函數(shù)function sinx_Callback(hObject, eventdata, handles)后面添加如下程序: x=0:0.01:2*pi; y=sin(x); plot(x,y) title('y=sin(x)'); xlabel('坐標(biāo)x'); ylabel('坐標(biāo)y'); 在函數(shù)function tanx_Callback(hObject, eventdata, handles)后面添加如下程序: x=0:0.
10、01:2*pi; y=tan(x); plot(x,y) title('y=tan(x)'); xlabel('坐標(biāo)x'); ylabel('坐標(biāo)y'); 在函數(shù)function stop_Callback(hObject, eventdata, handles)后面添加如下程序: close 第四步,逐項(xiàng)調(diào)試檢測 單擊工具欄的運(yùn)行按鈕,按照提示保存后,運(yùn)行并驗(yàn)證程序功能。 第五步,裝飾控件 一般情況停止按鈕為紅色較為習(xí)慣,運(yùn)行按鈕為綠色的,所以將STOP控件的Property Inspercter里的BackgroundColor設(shè)置為紅色;將y=sin(x)和y=ta
11、n(x)控件的Property Inspercter里的BackgroundColor設(shè)置為綠色的 例2:設(shè)計一個滾動條與一個編輯文本框互相傳遞并顯示0~10間的數(shù)字。 1、題意分析 本例需調(diào)用一個滾動條(Sliders)、一個動態(tài)文本編輯框(Edit Text)、一個靜態(tài)文本框(Static Text)、兩個命令按鈕(Push Button)。 2、控件分析 “滾動條”控件(Sliders)的響應(yīng):在圖形界面中添加該控件之后,設(shè)置它的屬性最大值max和最小值min,其值將在max和min之間變化。要獲取“滾動條”控件的當(dāng)前值及范圍, “文本框”控件(Edit Text)的響應(yīng):在
12、圖形界面中添加該控件之后,該控件的屬性相當(dāng)于其他語言設(shè)計中的文本框?qū)傩裕试S用戶動態(tài)地編輯或是輸入文本字符串。 3、界面設(shè)計 (1)新建一個GUI界面 在MATLAB操作桌面上,單擊File → New → GUI選項(xiàng),選擇Blank GUI(Default)模板,單擊“OK”按鈕,打開GUI設(shè)計窗口。 (2)添加控件 用鼠標(biāo)從GUI設(shè)計窗口的組件面板中拖動滾動條(Slider),一個靜態(tài)文本(Static Text)一個編輯文本(Edit Text),3個命令按鈕(PushButton)控件。 (3)排列控件 選中兩個或兩個以上的需要排列的控件,使用幾何位置排列工具,排列圖標(biāo)。
13、 (4)設(shè)置控件屬性 雙擊需要屬性設(shè)置的控件,打開對象屬性檢查器,設(shè)置控件屬性。 滾動條:BackgroundColor屬性修改為深藍(lán)色,Max屬性修改為10,Max屬性修改為0,其他為默認(rèn)值。 編輯文本:String屬性修改為“數(shù)字顯示欄”,F(xiàn)ontUnits屬性改為normalized,F(xiàn)ontWeight屬性改為bold,F(xiàn)ontSize屬性改為0.3。其他為默認(rèn)值。 編輯文本:String屬性修改為“顯示”,其他屬性同上。 “初始化值”按鈕:String屬性修改為“初始化值”,Tag屬性修改為“run”,BackgroundColor屬性修改為綠色,F(xiàn)ontUnits屬
14、性改為normalized,F(xiàn)ontWeight屬性改為bold,F(xiàn)ontSize屬性改為0.3。其他為默認(rèn)值。 “stop”按鈕:String屬性修改為“stop”,Tag屬性修改為“stop”,BackgroundColor屬性修改為紅色,其他同上。 程序界面控件布置如圖 4、回調(diào)函數(shù)設(shè)置 各控件的回調(diào)函數(shù)Callback為對象被選中時執(zhí)行的函數(shù)。 在“初始化值”按鈕上點(diǎn)擊右鍵,下拉菜單選擇View CallBacks → CallBack(回調(diào)函數(shù)), 在函數(shù)function run_Callback(hObject, eventdata, handles)后面添加
15、如下程序: set(handles.edit1,'String',num2str(get(handles.slider1,'Value'))); 在滾動條上點(diǎn)擊右鍵,下拉菜單選擇View CallBacks → CallBack(回調(diào)函數(shù)), 在函數(shù)function slider1 _Callback(hObject, eventdata, handles)后面添加如下程序: set(handles.edit1,'String',num2str(get(handles.slider1,'Value'))) 在編輯文本上點(diǎn)擊右鍵,下拉菜單選擇View CallBacks → CallB
16、ack(回調(diào)函數(shù)), 在函數(shù)function edit1_ Callback(hObject, eventdata, handles)后面添加如下程序: val=str2double(get(handles.edit1,'String')); if isnumeric(val)&length(val)==1&val>=get(handles.slider1,'Min')&val<=get(handles.slider1,'Max') set(handles.slider1,'Value',val); else set(handles.edit1,'String','
17、no number') end 在“stop”按鈕上點(diǎn)擊右鍵,下拉菜單選擇View CallBacks → CallBack(回調(diào)函數(shù)), 在函數(shù)function stop _ Callback(hObject, eventdata, handles)后面添加如下程序: close 5、 保存并運(yùn)行GUI 單擊工具欄的運(yùn)行按鈕,按照提示保存后,運(yùn)行并驗(yàn)證程序功能。 撥動滾動條,編輯文本內(nèi)顯示滾輪的當(dāng)前數(shù)值;在編輯文本里輸入0~10任意一數(shù)字,滾動條的滾輪將移到該數(shù)字的位置。 如果在編輯文本內(nèi)輸入的數(shù)字不在0~10之間,編輯文本將提示“no number”;任何時刻單擊“初始化
18、值”按鈕,滾動條和編輯文本都?xì)w零。 運(yùn)行結(jié)果如圖所示。 一、圖形對象句柄函數(shù) 1.圖形對象句柄函數(shù) 函數(shù)名稱 說明 函數(shù)名稱 說明 gcf 獲得當(dāng)前圖形窗口的句柄 gcbf 獲得當(dāng)前正在調(diào)用的圖形的句柄 gca 獲得當(dāng)前坐標(biāo)軸的句柄 gco 獲得當(dāng)前對象的句柄 gcbo 獲得當(dāng)前正在調(diào)用的對象的句柄 函數(shù)名稱 函數(shù)格式 說明 delete delete(h) 刪除句柄所對應(yīng)的圖形對象。h為對象句柄 close close(h) 關(guān)閉句柄所對應(yīng)的圖形對象。h為對象句柄 findobj h=findobj(‘Pr
19、operName’, ‘P’) 查找具有某種屬性的圖形對象句柄。ProperName為對象的某一個屬性(通常使用tag),P為該屬性的屬性值,h為得到的句柄 get PropertyValue=get(handle, ‘Name’) 獲取指定圖形對象某個指定屬性的屬性值。其中handle為圖形對象的句柄、Name為某個屬性名稱、PropertyValue為返回的屬性值 set set(handle) 顯示指定圖形對象所有可設(shè)置的屬性名稱及其可能取值。handle為圖形對象的句柄 P=set(handle, ‘ProperName’) 顯示指定圖形對象某個屬性的取值。handl
20、e為圖形對象的句柄,ProperName為屬性,P為返回的屬性值 set(handle,‘Name1’,Value1,‘Name2’, Value2, ‘Name3’,Value3,...) 設(shè)置指定圖形對象的某個屬性。handle為圖形對象的句柄,Name1為某個屬性,Value1為設(shè)置的屬性值,其他參數(shù)相同 圖形對象屬性: 1.屬性名與屬性值 MATLAB給每種對象的每一個屬性規(guī)定了一個名字,稱為屬性名,而屬性名的取值稱為屬性值。 例如:LineStyle是曲線對象的一個屬性名,決定線形,可以是-、:、-.、--等。 注:屬性名的寫法不區(qū)分大小寫。此外,屬性名
21、要用單撇號括起來。 2.屬性的操作 ① set函數(shù)重設(shè)對象屬性,調(diào)用格式為: set(句柄,屬性名1,屬性值1,屬性名2,屬性值2,…) 其中句柄用于指明要操作的圖形對象。如果在調(diào)用set函數(shù)時省略全部屬性名和屬性值,則將顯示出句柄所有的允許屬性。 ② get函數(shù)獲取屬性值,調(diào)用格式為: V=get(句柄,屬性名) 其中V是返回的屬性值。如果在調(diào)用get函數(shù)時省略屬性名,則將返回句柄所有的屬性值。 例如,繪制正弦曲線, x=0:pi/10:2*pi; h=plot(x,sin(x)); set(h, 'Color', 'r', 'LineStyle', ':
22、', 'Marker', 'p'); col=get(h, 'Color'); 圖形窗口對象 建立圖形窗口對象使用figure函數(shù),其調(diào)用格式為: 句柄變量=figure(屬性名1,屬性值1,屬性名2,屬 性值2,…) MATLAB通過對屬性的操作來改變圖形窗口的形式。也可以使用figure函數(shù)按MATLAB缺省的屬性值建立圖形窗口:figure 或 句柄變量=figure 要關(guān)閉圖形窗口,使用close函數(shù),其調(diào)用格式為:close(窗口句柄) 另外,close all 命令可以關(guān)閉所有的圖形窗口,clf命令則是清除當(dāng)前圖形窗口的內(nèi)容,但不關(guān)
23、閉窗口。 例3: 建立一個圖形窗口。該圖形窗口沒有菜單條,標(biāo)題名稱為“我的圖形窗口”,起始于屏幕左下角、寬度和高度分別為300像素點(diǎn)和150像素點(diǎn),背景顏色為綠色,且當(dāng)用戶從鍵盤按下任意一個鍵時,將顯示“Hello,Kebord Key Pressed.”字樣。 命令如下: hf=figure('Color',[0,1,0],'Position',[1,1,300,150],... 'Name','圖形窗口示例','NumberTitle','off', 'MenuBar','none', ... 'KeyPressFcn', 'disp(''Hello,Keyboard Ke
24、y Pressed.'')'); 菜單 : MATLAB可以創(chuàng)建兩種菜單:下拉式菜單和上下文(即彈出式)菜單。 在GUIDE窗口中,單擊Tools→Menu Editor…選項(xiàng)、或者單擊工具欄中的菜單編輯器圖標(biāo) 。在打開的菜單編輯器中,單擊 新菜單圖標(biāo),選中Untitled1菜單項(xiàng)。 Menu Bar選項(xiàng)卡 (1)Label:顯示菜單項(xiàng)的標(biāo)識字符串,在標(biāo)識字符串中的某字母前加&字符則定義一個快捷鍵,由〈Alt〉鍵+該字符來激活。 (2)Tag:菜單項(xiàng)的標(biāo)識項(xiàng)。 (3)Accelerator:定義菜單項(xiàng)的熱鍵,與〈Ctrl〉鍵組合使用。 (4)Sepa
25、rator above this item:在當(dāng)前菜單項(xiàng)前是否顯示一個分隔符,默認(rèn)是不顯示。 (5)Check mark this item:在當(dāng)前菜單項(xiàng)前是否顯示校驗(yàn)標(biāo)記,默認(rèn)是不顯示。 (6)Enable this item:設(shè)置菜單項(xiàng)使能狀態(tài),默認(rèn)是使能。 (7)Callback:設(shè)置菜單回調(diào)函數(shù)。 (8)More options:設(shè)置菜單屬性。單擊該按鈕,可打開菜單的屬性設(shè)置對話框。 Context Menus選項(xiàng)卡用于創(chuàng)建上下文(彈出式)菜單,多數(shù)是用鼠標(biāo)右鍵單擊某個圖形對象時,在屏幕上彈出的菜單。 這種菜單出現(xiàn)的位置是不固定的,而且總是和某個圖形對象的UICont
26、extMenu屬性相聯(lián)系。 先創(chuàng)建上下文菜單,再將圖形對象的UIContextMenu屬性設(shè)置為菜單的標(biāo)記。 另外,用戶可以使用或保留圖形窗口標(biāo)準(zhǔn)菜單。 在GUI設(shè)計窗口編輯區(qū)的空白處雙擊鼠標(biāo)(不要選擇任何控件),打開圖形窗口的屬性列表,設(shè)置Menu Bar屬性為figure即可。 例4:現(xiàn)將例1里的按鈕y=sin(x)和按鈕y=cos(x)合并到Run按鈕,通過Run按鈕的上下文菜單來選擇y=sin(x) 和y=cos(x)。 跟我練: 題意分析 將按鈕y=cos(x)刪除,將按鈕y=sin(x)改做Run按鈕,同時在Run按鈕鏈接一個上下文菜單來實(shí)現(xiàn)原來的按鈕
27、y=sin(x)和按鈕y=cos(x)的繪圖功能。 創(chuàng)建菜單 打開菜單編輯器Menu Editor →上下文菜單Context Menus →點(diǎn)擊Untitled_1 →將UIContextMenu Property里的Tag修改為tu →點(diǎn)擊UIContextMenu里的Callback的View →編輯M文件,添加如下程序內(nèi)容: [x,map]=imread('flower.jpg'); imshow(x) 點(diǎn)擊菜單編輯器Menu Editor的New Menu Item,→添加菜單子項(xiàng)sin(x) →將UIContextMenu Property里的屬性
28、Label修改為sin (x)→屬性Tag修改為sin(x) →點(diǎn)擊Callback后的View →編輯M文件,添加如下程序內(nèi)容: x=0:0.01:2*pi; y=sin(x); plot(x,y) title('y=sin(x)'); xlabel('坐標(biāo)x'); ylabel('坐標(biāo)y'); 在默認(rèn)情況顯示y=sin(x)曲線。 點(diǎn)擊菜單編輯器Menu Editor的New Menu Item,→添加菜單子項(xiàng)cos(x) →將UIContextMenu Property里的屬性Label修改為cos (x)→屬性Tag修改為cos(x) →點(diǎn)擊Callback后的View
29、 →編輯M文件,添加如下程序內(nèi)容: x=0:0.01:2*pi; y=cos(x); plot(x,y) title('y=cos(x)'); xlabel('坐標(biāo)x'); ylabel('坐標(biāo)y'); 界面設(shè)計 把例1的GUI設(shè)計窗口里y=cos(x)按鈕刪除。打開y=sin(x)按鈕的屬性編輯器Property Inspercter,將其String屬性改為Run;屬性UIContextMenu的屬性值改為tu,其他不變。 回調(diào)函數(shù)設(shè)置 在控件Run上單擊右鍵→View Callbacks,在函數(shù)function run_Callback(hObject, eve
30、ntdata, handles)后面添加如下程序: [x,map]=imread('flower.jpg'); imshow(x) 這樣當(dāng)用戶點(diǎn)擊Run控件時,界面就會默認(rèn)地顯示一張圖片 保存并運(yùn)行GUI 單擊工具欄的運(yùn)行按鈕,按照提示保存后,運(yùn)行并驗(yàn)證程序功能。 繼續(xù)在例4中添加一個菜單,改變背景顏色,若不合適就返回原來的顏色 打開菜單編輯器Menu Editor →菜單 Menu Bar →點(diǎn)擊Untitled_1 →將UIMenu Property里的Tag修改為color0 點(diǎn)擊菜單編輯器Menu Editor的New Menu Item,→添加菜單子項(xiàng)r
31、r →將UIMenu Property里的屬性Label修改為rr→屬性Tag修改為rr →點(diǎn)擊Callback后的View →編輯M文件,function rr_Callback(hObject, eventdata, handles) 添加如下程序內(nèi)容: set(gcf,'color','r') 點(diǎn)擊菜單編輯器Menu Editor的New Menu Item,→添加菜單子項(xiàng)g1 →將UIMenu Property里的屬性Label修改為g1→屬性Tag修改為g1→點(diǎn)擊Callback后的View →編輯M文件,function g1_Callback(hObject, eve
32、ntdata, handles) 添加如下程序內(nèi)容: set(gcf,'color',‘g') 點(diǎn)擊菜單編輯器Menu Editor的New Menu Item,→添加菜單子項(xiàng)re →將UIMenu Property里的屬性Label修改為re→屬性Tag修改為rr →點(diǎn)擊Callback后的View →編輯M文件,function kt8_1_OpeningFcn(hObject, eventdata, handles, varargin)添加如下程序內(nèi)容: xx=get(gcf,'color'); handles.xx=xx; 在function re_Cal
33、lback(hObject, eventdata, handles) 添加如下程序內(nèi)容: xx=handles.xx; set(gcf,'color',xx) 函數(shù)功能 函數(shù)格式 說明 打開文件 fname=uigetfile 列出當(dāng)前目錄下MATLAB能識別的所有文件,fname為返回選定的文件名 uigetfile(‘FilterSpec’, ‘DTitle’) 列出當(dāng)前目錄下由參數(shù)FilterSpec指定類型的文件,DTitle為打開對話框的標(biāo)題 保存文件 [F,P]= uiputfile(‘InitFile’, ‘DTitle’) 顯示用于保存文件
34、的對話框,InitFile為保存類型,DTitle為對話框的標(biāo)題。F為返回的文件名,P為文件路徑。F,P可缺省 顏色設(shè)置 uisetcolor(h, ‘DTitle’) 設(shè)置圖形對象的顏色。h為圖形對象句柄,DTitle為打開的顏色對話框標(biāo)題 字體設(shè)置 uisetfont(h, ‘DTitle’) 設(shè)置文本字符串、坐標(biāo)軸或控件的字體。參數(shù)同顏色設(shè)置 打印預(yù)覽 printpreview 當(dāng)前圖形窗口的打印預(yù)覽對話框 打印設(shè)置 printdlg 當(dāng)前圖形窗口的打印對話框 函數(shù)功能 函數(shù)格式 說明 幫助 helpdlg(‘string’,‘DTitle’) 顯
35、示幫助信息對話框。參數(shù)string為信息對話框,參數(shù)DTitle為對話框標(biāo)題 錯誤信息 errordlg(‘string’,‘DTitle’) 顯示錯誤信息對話框。參數(shù)同幫助對話框 信息提示 msgbox(‘string’,‘DTitle’,‘icon’) 顯示信息提示對話框。參數(shù)icon用于指定圖標(biāo),有none(默認(rèn),無圖標(biāo))、error_help、warn、custom(用戶自定義)四種 問題提示 questdlg(‘string’,‘DTitle’, ‘str1’, ‘str2’, ‘str3’, ‘default’) 顯示問題提示對話框。參數(shù)str1、str2、 st
36、r3代表三個按鈕,default必須是這三個按鈕中的一個,表示默認(rèn)選項(xiàng) 警告信息 warndlg(‘string’,‘DTitle’) 顯示警告信息對話框 進(jìn)程條 waitbar(x ,‘DTitle’) 以圖形方式顯示運(yùn)算或處理的進(jìn)程。參數(shù)x為進(jìn)程的比例長度,必須在0~1之間;參數(shù)DTitle為進(jìn)程條標(biāo)題 waitbar(x ,‘h’) 在同一進(jìn)程條中,顯示進(jìn)程的變化。參數(shù)h為進(jìn)程條的句柄。常用在循環(huán)語句中 變量輸入 inputdlg(prompt ,DTitle, line ,def ,‘resize’) 顯示變量輸入對話框。參數(shù)prompt定義輸入窗口及顯示信息,
37、DTitle為對話框標(biāo)題,line定義每個窗口的行數(shù),def為輸入的數(shù)據(jù),resize定義對話框大小是否可調(diào),可選on或off 將例4中的stop按鈕上添加一個停止對話框 編輯M文件function stop_Callback(hObject, eventdata, handles)添加如下程序內(nèi)容: hr=questdlg('親,你要停止嗎?','stop','no','yes',1) if hr=='yes' close else end 例5:做一個進(jìn)程條,顯示進(jìn)程速度,進(jìn)程顯示完后,自動關(guān)閉 clear clc h=waitbar(0,正在計算,請等待..
38、...') for i=1:10000 waitbar(i/1000,h) end close(h) MATLAB圖形用戶界面設(shè)計 1. 建立用戶菜單 要建立用戶菜單可用uimenu函數(shù),因其調(diào)用方法不同,該函數(shù)可以用于建立一級菜單項(xiàng)和子菜單項(xiàng)。 建立一級菜單項(xiàng)的函數(shù)調(diào)用格式為: 一級菜單項(xiàng)句柄=uimenu(圖形窗口句柄,屬性名1,屬性值1,屬性名2,屬性值2,…) 建立子菜單項(xiàng)的函數(shù)調(diào)用格式為: 子菜單項(xiàng)句柄=uimenu(一級菜單項(xiàng)句柄,屬性名1,屬性值1,屬性名2,屬性值2,…) 2. 快捷菜單 快捷菜單是用鼠標(biāo)右鍵單擊某對象時在屏幕上彈出的
39、菜單。這種菜單出現(xiàn)的位置是不固定的,而且總是和某個圖形對象相聯(lián)系。 在MATLAB中,可以使用uicontextmenu函數(shù)和圖形對象的 UIContextMenu屬性來建立快捷菜單,具體步驟為: (1) 利用uicontextmenu函數(shù)建立快捷菜單。 (2) 利用uimenu函數(shù)為快捷菜單建立菜單項(xiàng)。 (3) 利用set函數(shù)將該快捷菜單和某圖形對象聯(lián)系起來。 例6: 繪制曲線y=2sin(5x)sinx,并建立一個與之相聯(lián)系的快捷菜單,用以控制曲線的線型和曲線寬度。 x=0:pi/100:2*pi; y=2*sin(5*x).*sin(x); hl=plot(x,y)
40、; hc=uicontextmenu; %建立快捷菜單 hls=uimenu(hc,'Label','線型'); %建立菜單項(xiàng) hlw=uimenu(hc,'Label','線寬'); uimenu(hls,'Label','虛線','Call','set(hl,''LineStyle'','':'');'); uimenu(hls,'Label','實(shí)線','Call','set(hl,''LineStyle'',''-'');'); uimenu(hlw,'Label','加寬','Call','set(hl,''LineWidth'',2);')
41、; uimenu(hlw,'Label','變細(xì)','Call','set(hl,''LineWidth'',0.5);'); set(hl,'UIContextMenu',hc); %將該快捷菜單和曲線對象聯(lián)系起來 程序運(yùn)行后,若將鼠標(biāo)指針指向線條并單擊右鍵,則彈出快捷菜單。 1.建立控件對象 MATLAB提供了用于建立控件對象的函數(shù)uicontrol,其調(diào)用格式為: 對象句柄=uicontrol(圖形窗口句柄,屬性名1,屬性值1,屬性名2,屬性值2,…) 其中各個屬性名及可取的值和前面介紹的uimenu函數(shù)相似,但也不盡相同,下面將介紹一些常用的屬性。 例7:在一個
42、圖形窗口中繪制一個正弦曲線,并設(shè)置一個文本框,通過顏色選擇對話框設(shè)置曲線及文本框內(nèi)文字的顏色。 跟我練: 本例用到了函數(shù)uisetfont,其調(diào)用格式: h=uisetfont(h1,'title') 利用函數(shù)uisetcolor設(shè)置顏色對話框,其調(diào)用格式: hc=uisetcolor(h,’title’) 利用函數(shù)設(shè)置控件: hm=uicontrol(Hf,'PropertyName1',value1,'PropertyName2',value2,...) 。 程序內(nèi)容: clear hf=figure('position',[300 100 500 400],'name
43、','uicontrol1','numbertitle','off'); ha=axes('position',[0.4 0.1 0.5 0.5],'box','on'); %設(shè)置曲線顏色 x=0:0.01:2*pi; y=sin(x); h1=plot(x,y); hc=uisetcolor(h1,'選擇曲線顏色'); %設(shè)置字體及顏色 htt=uicontrol(hf,'style','text','string','練習(xí)練習(xí)?','position',[80 120 100 60]); hc=uisetcolor(htt,'選擇字體顏色'); htt1=uisetfo
44、nt(htt,'字體選擇'); 例8、本例實(shí)現(xiàn)在界面上不斷顯示一系列的圖片 跟我練: 1、利用imread函數(shù)從當(dāng)前路徑或搜索路徑下讀取圖片文件。 2、利用imshow函數(shù)顯示圖片 3、利用pause函數(shù)控制圖片顯示的頻率。 4、界面設(shè)計 (1)新建一個GUI界面 在MATLAB操作桌面上,單擊File → new → GUI選項(xiàng),選擇Blank GUI(Default)模板,單擊“OK”按鈕,打開GUI設(shè)計窗口。 (2)添加控件 用鼠標(biāo)從GUI設(shè)計窗口的組件面板中拖動坐標(biāo)軸(Axes)和2個命令按鈕(pushbutton)控件。 (3)排列控件 選中兩
45、個命令按鈕(pushbutton)控件,使用幾何位置排列工具,排列圖標(biāo)。 (4)設(shè)置控件屬性 雙擊需要屬性設(shè)置的控件,打開對象屬性檢查器設(shè)置控件屬性。 “圖片顯示”按鈕:String屬性修改為“圖片顯示”,Tag屬性修改為“show”,F(xiàn)ontUnits屬性改為normalized,F(xiàn)ontWeight屬性改為bold,F(xiàn)ontSize屬性改為0.3。其他為默認(rèn)值。 “STOP”按鈕:String屬性修改為“STOP”,Tag屬性修改為“stop”,F(xiàn)ontUnits屬性改為normalized,F(xiàn)ontWeight屬性改為bold,F(xiàn)ontSize屬性改為0.3,其他為默認(rèn)值。界面布
46、置如圖所示: (5)回調(diào)函數(shù)設(shè)置 在“圖片顯示”按鈕上點(diǎn)擊右鍵,下拉菜單選擇View CallBacks → CallBack(回調(diào)函數(shù)), 在函數(shù)function show_Callback(hObject, eventdata, handles)后面添加如下程序: [X,map]=imrea d('pdh1.jpg'); X2=imread('pdh2.jpg'); k=1; for n=1:4 imshow(X,map) pause(1) imshow(X2) pause(1) end 在“STOP”按鈕上點(diǎn)擊右鍵,下拉菜單選擇View CallBa
47、cks → CallBack(回調(diào)函數(shù)), 在函數(shù)function stop_Callback(hObject, eventdata, handles)后面添加如下程序: close 6、 保存并運(yùn)行GUI 單擊工具欄的運(yùn)行按鈕,按照提示保存后,運(yùn)行并驗(yàn)證程序功能。 運(yùn)行程序,點(diǎn)擊“圖片顯示”按鈕,運(yùn)行結(jié)果如圖所示。 (二)、自己練習(xí) 1、使用matlab7的幫助系統(tǒng)學(xué)習(xí)圖形對象的Name和NumberTitle屬性,創(chuàng)建一個圖形,繪制曲線,其中。修改前邊所題的兩個屬性,使得圖形的標(biāo)題為“圖形窗口”。 2、編制一個程序,使得“圖形”窗口的默認(rèn)底色為橘黃色,默認(rèn)的線寬為
48、4個像素,并繪制圖形。 3、使用matlab7的幫助系統(tǒng)學(xué)習(xí)Axes對象的CurrentPoint屬性的使用方法,并使用該屬性創(chuàng)建一個坐標(biāo)軸對象,在該坐標(biāo)軸內(nèi)用線將連續(xù)的鼠標(biāo)單擊連接。使用waitforbuttonpress命令等待用戶的鼠標(biāo)單擊,并在每次單擊之后刷新圖形,當(dāng)按鍵盤上的任意鍵時終止程序。 4、創(chuàng)建一個GUI,使用一個彈出式控件來選擇GUI的底色。給該GUI添加一個菜單,該菜單有2個子菜單,可以選擇顏色和線型。 5、創(chuàng)建一個GUI,繪制曲線,該GUI將提示用戶輸入a,b,c,的值,并輸入x的取值范圍。 6、設(shè)計一個表現(xiàn)漸進(jìn)過程的進(jìn)程條。 7、不使用按鈕組,建立三個具有互
49、斥功能的單選按鈕?;コ夤δ芫褪前聪乱粋€按鈕,另外兩個按鈕彈起。 8、設(shè)計一個帶有繪圖、操作和退出菜單的圖形用戶界面,其中“繪圖”菜單中有“正弦曲線”和“余弦曲線”兩個子菜單,分別控制在圖形窗口畫出正弦和余弦曲線;“操作”菜單中有“添加網(wǎng)格”和“清除網(wǎng)格”兩個子菜單,用于添加和清除網(wǎng)格。單擊“退出”菜單出現(xiàn)一個問題提示對話框,有“是”,“否”兩個按鈕,單擊“是”按鈕退出系統(tǒng),單擊“否”按鈕不進(jìn)行任何操作。 9、設(shè)計圖形用戶界面,在列表框中選擇函數(shù)類型(默認(rèn)是正弦函數(shù))后,單擊“繪制圖形”按鈕,繪制出函數(shù)曲線,單擊“清除圖形”按鈕,清除曲線,但保留坐標(biāo)軸。 10、設(shè)計圖形用戶界面。在幅值、頻
50、率輸入框中輸入數(shù)值后,單擊“繪制圖形”按鈕,繪制出正弦曲線;單擊“清除圖形”按鈕,清除曲線,保留坐標(biāo)軸。如果沒有輸入幅值或頻率數(shù)值就單擊“繪制圖形”按鈕,不能繪制圖形,并彈出錯誤對話框。 11、仿真x(t)=sin(t)sin(10t) 的波形。 12、設(shè)計一個數(shù)字電路的8線----3線編碼器,并Simulink仿真。 13、練習(xí)書上例7-3 14、建立階躍信號 u(t-2) 積分運(yùn)算仿真模型,并觀察信號波形。 15、仿真y(t)=sin(t)-sin(2t)的波形。 16、仿真函數(shù)sin(x)e-x 的波形。(提示:使用User-Defined Functions模塊庫下的Fcn模塊生成e-x). 四、思考題 1、什么是圖形句柄?圖形句柄有什么用途?如何設(shè)置和獲取指定句柄對象的屬性? 2、回調(diào)函數(shù)的用途是什么?如何設(shè)置? 3、簡述GUI控件的種類,其各自的功能是什么? 五、實(shí)驗(yàn)要求 1.復(fù)習(xí)本章相關(guān)知識。 2.編寫程序,運(yùn)行程序并記錄運(yùn)行結(jié)果。 3.撰寫實(shí)驗(yàn)報告。 15
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2023年六年級數(shù)學(xué)下冊6整理和復(fù)習(xí)2圖形與幾何第7課時圖形的位置練習(xí)課件新人教版
- 2023年六年級數(shù)學(xué)下冊6整理和復(fù)習(xí)2圖形與幾何第1課時圖形的認(rèn)識與測量1平面圖形的認(rèn)識練習(xí)課件新人教版
- 2023年六年級數(shù)學(xué)下冊6整理和復(fù)習(xí)1數(shù)與代數(shù)第10課時比和比例2作業(yè)課件新人教版
- 2023年六年級數(shù)學(xué)下冊4比例1比例的意義和基本性質(zhì)第3課時解比例練習(xí)課件新人教版
- 2023年六年級數(shù)學(xué)下冊3圓柱與圓錐1圓柱第7課時圓柱的體積3作業(yè)課件新人教版
- 2023年六年級數(shù)學(xué)下冊3圓柱與圓錐1圓柱第1節(jié)圓柱的認(rèn)識作業(yè)課件新人教版
- 2023年六年級數(shù)學(xué)下冊2百分?jǐn)?shù)(二)第1節(jié)折扣和成數(shù)作業(yè)課件新人教版
- 2023年六年級數(shù)學(xué)下冊1負(fù)數(shù)第1課時負(fù)數(shù)的初步認(rèn)識作業(yè)課件新人教版
- 2023年六年級數(shù)學(xué)上冊期末復(fù)習(xí)考前模擬期末模擬訓(xùn)練二作業(yè)課件蘇教版
- 2023年六年級數(shù)學(xué)上冊期末豐收園作業(yè)課件蘇教版
- 2023年六年級數(shù)學(xué)上冊易錯清單十二課件新人教版
- 標(biāo)準(zhǔn)工時講義
- 2021年一年級語文上冊第六單元知識要點(diǎn)習(xí)題課件新人教版
- 2022春一年級語文下冊課文5識字測評習(xí)題課件新人教版
- 2023年六年級數(shù)學(xué)下冊6整理和復(fù)習(xí)4數(shù)學(xué)思考第1課時數(shù)學(xué)思考1練習(xí)課件新人教版