第六講 M語言程序及圖形用戶界面設(shè)計_第1頁
第六講 M語言程序及圖形用戶界面設(shè)計_第2頁
第六講 M語言程序及圖形用戶界面設(shè)計_第3頁
第六講 M語言程序及圖形用戶界面設(shè)計_第4頁
第六講 M語言程序及圖形用戶界面設(shè)計_第5頁
已閱讀5頁,還剩66頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第六講M語言程序與圖形用戶界面設(shè)計M語言的引入使得MATLAB具有了更強大的功能,給使用者更多的自由和選擇,而其圖形用戶界面使得用戶可以建立自己的專業(yè)應(yīng)用軟件。2主要內(nèi)容6.1M文件基礎(chǔ)6.2程序控制結(jié)構(gòu)6.3函數(shù)文件6.3程序調(diào)試6.4程序性能分析與優(yōu)化6.5圖形用戶界面(GUI)對象6.6圖形用戶界面設(shè)計工具6.7圖形用戶界面編程36.1M文件基礎(chǔ)用MATLAB語言編寫的程序文件,稱為M文件。6.1.1M文件建立與打開6.1.2M文件的分類46.1.1M文件建立與打開M文件建立方式菜單方式:通過【File】|【New】|【M-File】菜單進入文本編輯器界面。命令方式:在MATLAB命令窗口輸入命令edit,啟動文本編輯器。工具欄方式:單擊MATLAB主窗口工具欄上的NewM-File命令按鈕。56.1.1M文件建立與打開M文件打開方式菜單方式:從MATLAB主窗口的【File】|【Open】命令,則屏幕出現(xiàn)Open對話框,在Open對話框中選中所需打開的M文件。工具欄方式:單擊MATLAB主窗口工具欄上的OpenFile命令按鈕,再從彈出的對話框中選擇所需打開的M文件。命令方式:在MATLAB命令窗口輸入命令edit文件名%打開指定的M文件。66.1.2M文件的分類M文件可以根據(jù)調(diào)用方式的不同分為兩類:命令文件(ScriptFile)和函數(shù)文件(FunctionFile)。命令文件沒有輸入?yún)?shù),也不返回輸出參數(shù),而函數(shù)文件可以帶輸入?yún)?shù),也可返回輸出參數(shù)。命令文件對MATLAB工作空間中的變量進行操作,文件中所有命令的執(zhí)行結(jié)果也完全返回到工作空間中,而函數(shù)文件中定義的變量為局部變量,當函數(shù)文件執(zhí)行完畢時,這些變量被清除。命令文件可以直接運行,在MATLAB命令窗口輸入命令文件的名字,就會順序執(zhí)行命令文件中的命令,而函數(shù)文件不能直接運行,而要以函數(shù)調(diào)用的方式來調(diào)用它。76.2程序控制結(jié)構(gòu)6.2.1順序結(jié)構(gòu)6.2.2循環(huán)結(jié)構(gòu)6.2.3選擇結(jié)構(gòu)6.2.4其他控制結(jié)構(gòu)對于實現(xiàn)任何功能的程序,均可由順序、循環(huán)和選擇3種基本結(jié)構(gòu)組合實現(xiàn)。為了更方便地設(shè)計程序,還需要一些特殊的控制結(jié)構(gòu),如跳出循環(huán)結(jié)構(gòu)。86.2.1順序結(jié)構(gòu)順序結(jié)構(gòu)就是由前至后依次執(zhí)行程序的各條代碼,直至最后一條代碼。命令文件就是典型的順序結(jié)構(gòu)。順序結(jié)構(gòu)一般涉及數(shù)據(jù)的輸入、數(shù)據(jù)的計算或處理、數(shù)據(jù)的輸出等內(nèi)容。96.2.1順序結(jié)構(gòu)數(shù)據(jù)的輸入從鍵盤輸入數(shù)據(jù),則可以使用input函數(shù)來進行,該函數(shù)的調(diào)用格式為:A=input(‘提示信息’,選項);提示信息為一個字符串,提示用戶輸入什么樣的數(shù)據(jù)。在input調(diào)用時采用's'選項,則允許用戶輸入一個字符串。例如輸入一個人姓名的命令:xm=input('What''syourname?','s');106.2.1順序結(jié)構(gòu)MATLAB提供的命令窗口輸出函數(shù)主要有disp函數(shù),其調(diào)用格式為Disp(輸出項)輸出項既可以為字符串,也可以為矩陣。116.2.1順序結(jié)構(gòu)程序的暫停暫停程序的執(zhí)行可以使用pause函數(shù),其調(diào)用格式為:Pause(延遲秒數(shù))如果省略延遲時間,直接使用pause,則將暫停程序,直到用戶按任一鍵后程序繼續(xù)執(zhí)行。若要強行中止程序的運行可使用Ctrl+C命令。126.2.2循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)是按照給定的條件,重復(fù)執(zhí)行指定的代碼。該結(jié)構(gòu)一般用于有規(guī)律的重復(fù)運算。在MATLAB中包括for循環(huán)和while循環(huán)。for——endwhile——end136.2.2循環(huán)結(jié)構(gòu)for循環(huán)格式:for循環(huán)變量=表達式1:表達式2:表達式3

循環(huán)體語句end表達式1的值為循環(huán)變量的初值,表達式2的值為步長,表達式3的值為循環(huán)變量的終值。步長為1時,表達式2可以省略。146.2.2循環(huán)結(jié)構(gòu)for循環(huán)示例利用for循環(huán)求1!+2!+3!+…+5!的值156.2.2循環(huán)結(jié)構(gòu)while循環(huán)格式:while(條件)

循環(huán)體語句end其執(zhí)行過程為:若條件成立,則執(zhí)行循環(huán)體語句,執(zhí)行后再判斷條件是否成立,如果不成立則跳出循環(huán)。166.2.2循環(huán)結(jié)構(gòu)while循環(huán)示例從鍵盤輸入若干個數(shù),當輸入0時結(jié)束輸入,求這些數(shù)之和。176.2.3選擇結(jié)構(gòu)選擇結(jié)構(gòu)是根據(jù)給定的條件成立或不成立,分別執(zhí)行不同的語句。在MATLAB中有if-else-end和switch-case-otherwise兩種結(jié)構(gòu)。186.2.3選擇結(jié)構(gòu)if結(jié)構(gòu)單分支if語句:if條件語句組end當條件成立時,則執(zhí)行語句組,執(zhí)行完之后繼續(xù)執(zhí)行if語句的后繼語句;若條件不成立,則直接執(zhí)行if語句的后繼語句。196.2.3選擇結(jié)構(gòu)雙分支if語句:if條件語句塊1%條件滿足else

語句塊2%條件不滿足end多分支if語句:if條件1

語句塊1elseif條件2

語句塊2……elseif條件n

語句塊nelse

語句塊n+1end這種結(jié)構(gòu)實現(xiàn)了一種多路選擇,比較復(fù)雜??商娲话愀呒壵Z言中的switch-case-end語句。206.2.3選擇結(jié)構(gòu)多分支if語句示例輸入一個字符,若為大寫字母,則輸出其對應(yīng)的小寫字母;若為小寫字母,則輸出其對應(yīng)的大寫字母;若為數(shù)字字符則輸出其對應(yīng)數(shù)的平方,若為其他字符則原樣輸出。216.2.3選擇結(jié)構(gòu)switch語句switch語句根據(jù)表達式的取值不同,分別執(zhí)行不同的語句,其語句格式為switch表達式

case結(jié)果表1

語句塊1case結(jié)果表2

語句塊2……case結(jié)果表n

語句塊notherwise

語句塊n+1endswitch子句后面的表達式應(yīng)為一個標量或一個字符串,case子句后面的結(jié)果不僅可以為一個標量或一個字符串,而且還可以為一個將多個結(jié)果用大括號括起來的單元數(shù)據(jù)(Cell)。如果case子句后面的結(jié)果為一個單元數(shù)據(jù),則表達式的值等于該單元數(shù)據(jù)中的某個元素時,執(zhí)行相應(yīng)的語句組。226.2.3選擇結(jié)構(gòu)switch語句示例num2cell函數(shù)是將數(shù)值矩陣轉(zhuǎn)化為單元矩陣,num2cell(1:5)等價于{1,2,3,4,5}236.2.4其他控制結(jié)構(gòu)continuebreakechokeyboardtry語句246.2.4其他控制結(jié)構(gòu)continuecontinue語句控制跳過循環(huán)體中的某些語句。當在循環(huán)體內(nèi)執(zhí)行到該語句時,程序?qū)⑻^循環(huán)體中所有剩下的語句,繼續(xù)下一次循環(huán)。breakbreak語句用于終止循環(huán)的執(zhí)行。當在循環(huán)體內(nèi)執(zhí)行到該語句時,程序?qū)⑻鲅h(huán),繼續(xù)執(zhí)行循環(huán)語句的下一語句。256.2.4其他控制結(jié)構(gòu)echoon/off執(zhí)行M文件時,通常在命令窗口是看不到執(zhí)行過程的,但在特殊情況下(比如演示)要求M文件的每條命令都要顯示出來。這時可以用echo命令實現(xiàn)這樣的功能。keyboard此命令將停止文件的執(zhí)行并將控制權(quán)交給鍵盤,此時命令窗口的提示符由“>>”變成“K>>”,當輸入return后,控制權(quán)將交回文件。該命令對程序的調(diào)試和在程序運行中修改變量值都很方便。266.2.4其他控制結(jié)構(gòu)try語句語句格式為:try

語句組1catch

語句組2endtry語句先試探性執(zhí)行語句組1,如果語句組1在執(zhí)行過程中出現(xiàn)錯誤,則將錯誤信息賦給保留的lasterror變量,并轉(zhuǎn)去執(zhí)行語句組2。276.3函數(shù)文件6.3.1函數(shù)文件的基本結(jié)構(gòu)6.3.2函數(shù)調(diào)用6.3.3全局變量286.3.1函數(shù)文件的基本結(jié)構(gòu)函數(shù)文件由function語句引導(dǎo),其基本結(jié)構(gòu)為:

function[輸出形參表]=函數(shù)名(輸入形參表)

注釋說明部分函數(shù)體語句以function開頭的一行為引導(dǎo)行,表示該M文件是一個函數(shù)文件。函數(shù)名的命名規(guī)則與變量名相同。函數(shù)文件名通常由函數(shù)名再加上擴展名.m組成。當函數(shù)文件名與函數(shù)名不同時,MATLAB將忽略函數(shù)名而確認函數(shù)文件名,因此,調(diào)用時使用函數(shù)文件名。輸入形參為函數(shù)的輸入?yún)?shù),輸出形參為函數(shù)的輸出參數(shù)。當輸出形參多于一個時,則應(yīng)該用方括號[]。296.3.1函數(shù)文件的基本結(jié)構(gòu)編寫函數(shù)文件求半徑為r的圓的面積和周長。306.3.2函數(shù)調(diào)用函數(shù)調(diào)用的一般格式為[輸出實參表]=函數(shù)名(輸入實參表)函數(shù)調(diào)用時各實參出現(xiàn)的順序、個數(shù),應(yīng)與函數(shù)定義時形參的順序、個數(shù)一致,否則會出錯。函數(shù)調(diào)用時,先將實參傳遞給相應(yīng)的形參,從而實現(xiàn)參數(shù)傳遞,然后再執(zhí)行函數(shù)的功能。316.3.2函數(shù)調(diào)用326.3.3全局變量在MATLAB中,函數(shù)文件中的變量是局部的,與其他函數(shù)文件及MATLAB工作空間相互隔離,即在一個函數(shù)文件中定義的變量不能被另一個函數(shù)文件引用。如果在若干函數(shù)中,都把某一變量定義為全局變量,那么這些函數(shù)將公用這一個變量。全局變量的作用域是整個MATLAB工作空間,即全程有效,所有的函數(shù)都可以對它進行存取和修改,定義全局變量是函數(shù)間傳遞信息的一種手段。全局變量用global命令定義,格式為global

變量名336.3.3全局變量346.3程序調(diào)試6.3.1程序調(diào)試概述6.3.2MATLAB調(diào)試菜單356.3.1程序調(diào)試概述應(yīng)用程序的錯誤有兩類一類是語法錯誤一類是運行時的錯誤語法錯誤包括語法或文法的錯誤,如函數(shù)名拼寫錯、表達式書寫錯、數(shù)據(jù)類型錯誤等。MATLAB能夠檢查出大部分的語法錯誤,給出相應(yīng)錯誤信息,并標出錯誤在程序中的行號。程序運行時的錯誤是指程序的運行結(jié)果有錯誤,這類錯誤也稱為程序邏輯錯誤。MATLAB系統(tǒng)對邏輯錯誤是無能為力的,不會給出任何提示信息。這時可以通過一些調(diào)試手段來發(fā)現(xiàn)程序中的邏輯錯誤,最常見的辦法是通過獲取中間結(jié)果的方式來獲取錯誤可能發(fā)生的程序段,以便進一步分析錯誤的原因。366.3.2MATLAB調(diào)試菜單斷點操作Set/ClearBreakpoint:設(shè)置或清除斷點。Set/ModifyConditionalBreakpoint:設(shè)置或修改條件斷點。條件斷點可以使程序執(zhí)行到滿足一定條件時停止。Enable/DisableBreakpoint:使斷點有效或無效。ClearBreakpointsinAllFiles:清除所有斷點。StopIfErrors/Warnings:在程序執(zhí)行出現(xiàn)錯誤或警告時,停止程序運行,進入調(diào)試狀態(tài),不包括try…catch語句中的錯誤。376.3.2MATLAB調(diào)試菜單(Debug)控制單步運行Step:單步運行。每單擊一次,程序運行一次,但不進入函數(shù)。StepIn:單步運行。遇到函數(shù)時進入函數(shù)內(nèi),仍單步運行。StepOut:停止單步運行。如果是在函數(shù)中,跳出函數(shù);如果不在函數(shù)中,直接運行到下一個斷點處。GoUntilCursor:直接運行到光標所在的位置。386.4程序性能分析與優(yōu)化6.4.1程序性能分析6.4.2程序優(yōu)化396.4.1程序性能分析調(diào)試器只負責M文件中語法錯誤和運行錯誤的定位,而Profiler性能評估器能分析程序各環(huán)節(jié)的耗時情況,分析報告能幫助用戶尋找影響程序運行速度的“瓶頸”所在,以便于進行程序優(yōu)化。通過函數(shù)文件性能評估器(Profiler)用戶可以很方便地了解程序執(zhí)行過程中各函數(shù)及函數(shù)中的每條語句所耗費的時間,從而有針對性地改進程序,提高程序的運行效率。406.4.1程序性能分析在MATLAB主窗口的“Desktop”菜單中選擇“Profiler”命令或在M文件編輯器的“Tools”菜單中選擇“OpenProfiler”命令,啟動Profiler性能評估器。416.4.2程序優(yōu)化向量化426.4.2程序優(yōu)化預(yù)分配內(nèi)存空間。通過在循環(huán)之前預(yù)分配向量或數(shù)組的內(nèi)存空間可以提高for循環(huán)的處理速度。例如,用函數(shù)zeros預(yù)分配for循環(huán)中用到的向量a的內(nèi)存空間。436.4.2程序優(yōu)化減小運算強度。采用運算量更小的表達式,一般來說,乘法比乘方運算快,加法比乘法運算快,位運算比求余運算快。446.5圖形用戶界面(GUI)對象6.5.1用戶界面對象概述6.5.2控件的公共屬性6.5.3回調(diào)函數(shù)6.5.4GUI的設(shè)計方式456.5.1用戶界面對象概述GUI是一種包含多種對象的圖形窗口。GUIDE主要是MATLAB的一個界面設(shè)計工具集,將所有GUI支持的控件都集成在這個環(huán)境中。466.5.1用戶界面對象概述GUIDE將設(shè)計好的GUI保存在一個FIG文件中,同時生成M文件框架。FIG文件:該文件包括GUI圖形窗口及其所有FIG文件包含序列化的圖形窗口對象;M文件:該文件包括GUI設(shè)計、控制函數(shù)以及定義為子函數(shù)的用戶控件回調(diào)函數(shù)。GUIDE可以根據(jù)GUI設(shè)計過程直接自動生成M文件框架,優(yōu)點如下:M文件已經(jīng)包含一些必要的代碼;管理圖形對象句柄并執(zhí)行回調(diào)函數(shù)子程序;提供管理全局數(shù)據(jù)的途徑;支持自動插入回調(diào)函數(shù)原型。476.5.1用戶界面對象概述1控件(Uicontrol)控件是顯示數(shù)據(jù)或接受數(shù)據(jù)輸入的相對獨立的用戶界面元素。常用的控件如下:(1)按鈕(PushButton)(2)雙位按鈕(ToggleButton)(3)單選按鈕(RadioButton)(4)復(fù)選框(CheckBox)(5)列表框(ListBox)(6)彈出框(Pop-upMenu)(7)編輯框(EditBox)(8)滑動條(Slider)(9)靜態(tài)文本(StaticText)486.5.1用戶界面對象概述2菜單(Uimenu)3快捷菜單(Uicontextmenu)4按鈕組(Uibuttongroup)5面板(Uipanel)6工具欄(Uitoolbar)7表(Uitable)496.5.2控件的公共屬性基本控制屬性Style屬性:定義控件對象的類型。該屬性的取值可以是push(按鈕,默認值)、toggle(雙位按鈕)、radio(單選按鈕)、check(復(fù)選框)、list(列表框)、popup(彈出框)、edit(編輯框)、text(靜態(tài)文本)和slider(滑動條)。Tag屬性:該屬性的取值為字符串,定義了控件的標識值,在程序中可以通過這個標識值控制該控件對象。String屬性:該屬性的取值是字符串。它定義控件對象的說明文字,如按鈕上的說明文字BackgroundColor、ForegroundColor屬性:屬性的取值是代表某種顏色的字符或RGB三元組。BackgroundColor屬性定義控件對象區(qū)域的背景色,它的默認顏色是淺灰色。ForegroundColor屬性定義控件對象說明文字的顏色,其默認顏色是黑色。506.5.2控件的公共屬性基本控制屬性HorizontalAlignment屬性:該屬性的取值是left、center(默認值)或right。用來決定控件對象說明文字在水平方向上的對齊方式,即說明文字在控件對象圖標上居左(left)、居中(center)、居右(right)。Max、Min屬性:屬性的取值都是數(shù)值,其默認值分別是1和0。這兩個屬性值對于不同的控件對象類型,其意義是不同的。當單選按鈕被激活時,它的Value屬性值為Max屬性定義的值。當單選按鈕處于非激活狀態(tài)時,它的Value屬性值為Min屬性定義的值。當復(fù)選框被激活時,它的Value屬性值為Max屬性定義的值。當復(fù)選框處于非激活狀態(tài)時,它的Value屬性值為Min屬性定義的值。對于滑動條對象,Max屬性值必須比Min屬性值大,Max定義滑動條的最大值,Min定義滑動條的最小值。對于編輯框,如果Max-Min>1,那么對應(yīng)的編輯框接受多行字符輸入。如果Max-Min≤1,那么編輯框僅接收單行字符輸入。對于列表框,Max-Min>1,那么在列表框中允許多項選擇;如果Max-Min≤1,那么在列表框中只允許單項選擇。彈出框和靜態(tài)文本等控件對象不使用Max和Min屬性。516.5.2控件的公共屬性基本控制屬性Value屬性:該屬性的取值可以是向量值,也可以是數(shù)值,它的含義依賴于控件對象的類型。對于單選按鈕和復(fù)選框,當它們處于激活狀態(tài)時,Value屬性值由Max屬性定義,反之由Min屬性定義。對于彈出框,Value屬性值是被選項的序號,所以由Value的值,可知彈出框的選項。同樣,對于列表框,Value屬性值定義了列表框中高亮度選項的序號。對于滑動條對象,Value屬值處于Min與Max屬性值之間,由滑動條標尺位置對應(yīng)的值定義。其他的控件對象不使用這個屬性值。526.5.2控件的公共屬性事件響應(yīng)屬性Callback屬性:該屬性是連接程序界面整個程序系統(tǒng)的實質(zhì)性功能的紐帶。對控件執(zhí)行默認操作時,MATLAB自動執(zhí)行控件的Callback下的代碼。Callback屬性允許用戶建立起在控件對象被選中后的響應(yīng)命令。不同的控件可以響應(yīng)不同的事件,盡管有相同的屬性名,但是其實現(xiàn)的功能卻因控件的不同而不同。例如,按鈕的Callback是由于鼠標的一次單擊引起的,而Pop-upMenu則是鼠標單擊下拉按鈕,然后在列表中單擊一個條目之后發(fā)生的。BusyAction屬性:處理回調(diào)函數(shù)的中斷。該屬性有兩種選項,即Cancel(取消中斷事件)和Queue(排隊,默認設(shè)置)。ButtonDownFcn屬性:按鈕按下時的處理函數(shù)。CreateFcn屬性:在對象產(chǎn)生過程中執(zhí)行的回調(diào)函數(shù)。DeleteFcn屬性:刪除對象過程中執(zhí)行的回調(diào)函數(shù)。Interruptible屬性:指定當前的回調(diào)函數(shù)在執(zhí)行時是否允許中斷,去執(zhí)行其他的函數(shù)。536.5.2控件的公共屬性圖形窗口對象還有一些特殊的事件屬性。CloseRequestFcn屬性:圖形窗口關(guān)閉時執(zhí)行。KeyPressFcn屬性:有鍵按下。ResizeFcn屬性:用戶調(diào)整Figure的大小。WindowButtonDownFcn屬性:在圖形窗口的空白處單擊。WindowButtonMotionFcn屬性:鼠標在圖形窗口上方移動時。WindowButtonUpFcn屬性:在圖形窗口上單擊鼠標又抬起之后。546.5.3回調(diào)函數(shù)在圖形用戶界面中,每一控件均與一或數(shù)個函數(shù)或程序相關(guān),此相關(guān)之程序稱為回調(diào)函數(shù)(callbacks)。每一個回調(diào)函數(shù)可以經(jīng)由按鈕觸動、鼠標單擊、項目選定、光標滑過特定控件等動作后產(chǎn)生的事件下執(zhí)行。事件驅(qū)動機制事件是由用戶或操作系統(tǒng)引發(fā)的動作。事件發(fā)生在用戶與應(yīng)用程序交互時,例如,單擊控件、鍵盤輸入、移動鼠標等都是一些事件。回調(diào)函數(shù)回調(diào)函數(shù)就是處理該事件的程序,它定義對象怎樣處理信息并響應(yīng)某事件,該函數(shù)不會主動運行,是由主控程序調(diào)用的。主控程序一直處于前臺操作,它對各種消息進行分析、排隊和處理,當控件被觸發(fā)時去調(diào)用指定的回調(diào)函數(shù),執(zhí)行完畢之后控制權(quán)又回到主控程序。gcbo為正在執(zhí)行回調(diào)的對象句柄,可以使用它來查詢該對象的屬性。例如:get(gcbo,‘Value’)%獲取回調(diào)對象的狀態(tài)MATLAB將Tag屬性作為每一個控件的唯一標識符。GUIDE在生成M文件時,將Tag屬性作為前綴,放在回調(diào)函數(shù)關(guān)鍵字Callback前,通過下畫線連接而成函數(shù)名。例如:functionpushbutton1_Callback(hObject,eventdata,handles)其中,hObject為發(fā)生事件的源控件,eventdata為事件數(shù)據(jù),handles為一個結(jié)構(gòu)體,保存圖形窗口中所有對象的句柄。556.5.3回調(diào)函數(shù)handles結(jié)構(gòu)體GUI中的所有控件使用同一個handles結(jié)構(gòu)體,handles結(jié)構(gòu)體中保存了圖形窗口中所有對象的句柄,可以使用handles獲取或設(shè)置某個對象的屬性。例如,設(shè)置圖形窗口中靜態(tài)文本控件text1上的文字為“Welcome”:set(handles.text1,'string','Welcome')例如,要將向量X中的數(shù)據(jù)保存到handles結(jié)構(gòu)體中,按照下面的步驟進行操作。(1)給handles結(jié)構(gòu)體添加新字段并賦值,即handles.mydata=X;(2)用guidata函數(shù)保存數(shù)據(jù),即guidata(hObject,handles)其中,hObject是執(zhí)行回調(diào)的控件對象的句柄。要在另一個回調(diào)中提取數(shù)據(jù),使用下面的命令:X=handles.mydata;566.5.4GUI的設(shè)計方式在MATALB中,GUI的設(shè)計方式有兩種通過使用MATLAB提供的圖形用戶界面設(shè)計工具(GraphicalUserInterfaceDevelopmentEnvironment,GUIDE)來創(chuàng)建GUI。使用M文件創(chuàng)建GUI。編寫代碼,調(diào)用uicontrol、uimenu等函數(shù)創(chuàng)建GUI。這種方式不會產(chǎn)生FIG文件,只有M文件,代碼可移植性和通用性強。576.6圖形用戶界面設(shè)計工具MATLAB的用戶界面設(shè)計工具有多個,常用的有圖形用戶界面設(shè)計窗口(LayoutEditor)、對象屬性查看器(PropertyInspector)、菜單編輯器(MenuEditor)、位置調(diào)整工具(AlignObjects)、Tab順序編輯器(TabOrderEditor)、工具欄編輯器(ToolbarEditor)、對象瀏覽器(ObjectBrowser)、M文件編輯器(M-FileEditor)等。586.6.1圖形用戶界面設(shè)計窗口GUI設(shè)計模板在MATLAB主窗口中,選擇“File”菜單中的“New”菜單項,再選擇其中的“GUI”命令,彈出GUI設(shè)計模板。596.6.1圖形用戶界面設(shè)計窗口GUI設(shè)計窗口選擇BlankGUI設(shè)計模板后顯示的GUI設(shè)計窗口。GUI設(shè)計窗口由菜單欄、工具欄、控件工具欄、圖形對象設(shè)計區(qū)等部分組成。在GUI設(shè)計窗口左邊的是控件工具欄,從中選擇一個對象,以拖曳方式在對象設(shè)計區(qū)生成該對象,其對象創(chuàng)建方式方便、簡單。606.6.2對象屬性查看器利用對象屬性查看器,可以查看每個對象的屬性值,也可以修改、設(shè)置對象的屬性值。在選中某個對象后,從GUI設(shè)計窗口工具欄上選擇“PropertyInspector”命令按鈕,或者選擇“View”菜單中的“PropertyInspector”命令,打開對象屬性查看器。在MATLAB命令窗口的命令行上輸入命令“inspect”,也可以打開對象屬性查看器。616.6.3菜單編輯器利用菜單編輯器可以創(chuàng)建、設(shè)置、修改下拉式菜單和快捷菜單。從GUI設(shè)計窗口的工具欄上選擇“MenuEditor”命令按鈕,或者選擇“Tools”菜單中的“MenuEditor”命令,即可打開菜單編輯器。創(chuàng)建菜單菜單編輯器有兩個選項卡,選擇MenuBar選項卡,可以創(chuàng)建下拉式菜單。選擇ContextMenus選項卡,可以創(chuàng)建快捷菜單。626.6.3菜單編輯器設(shè)置菜單屬性在創(chuàng)建菜單時,可以設(shè)置菜單的屬性,菜單編輯器右邊列出了菜單的主要屬性。Label屬性:該屬性的取值是字符串,用于定義菜單項的名字。Tag屬性:該屬性的取值為字符串,用于定義菜單項的標識值。Accelerator屬性:該屬性的取值可以是任何字母,用于定義菜單項的快捷鍵。菜單項外觀屬性:其取值是開關(guān)值(即on或off)。Separator屬性。在該菜單項上方添加一條分隔線。Check屬性。該屬性為菜單項定義一個指示標記,可以用這個特性指明菜單項是否已選中,其默認值是off。如果選中“Checkmarkthisitem”復(fù)選框,即設(shè)該屬性值為on,則指明菜單項已選中。Enable屬性。這個屬性控制菜單項的可選擇性,其默認值是on。如果取消“Enablethisitem”復(fù)選框的選中狀態(tài),即設(shè)該屬性值為off,則此時不能使用該菜單,該菜單項呈灰色。Callback屬性:該屬性的取值是字符串,可以是某個M文件名或一組MATLAB命令。在該菜單項被選中以后,MATLAB將自動地調(diào)用此回調(diào)函數(shù)來做出對相應(yīng)菜單項的響應(yīng),如果沒有設(shè)置一個合適的回調(diào)函數(shù),則此菜單項也將失去其應(yīng)有的意義。636.6.4位置調(diào)整工具

利用位置調(diào)整工具,可以對GUI對象設(shè)計區(qū)內(nèi)的多個對象的位置進行調(diào)整。在選中多個對象后,在GUI設(shè)計窗口的工具欄上選擇“AlignObjects”命令按鈕,或者選擇“Tools”菜單中的“AlignObjects”命令,打開對象位置調(diào)整器。646.6.5對象瀏覽器利用對象瀏覽器,可以查看當前設(shè)計階段的各個句柄圖形對象。從GUI設(shè)計窗口的工具欄上選擇“ObjectBrowser”命令按鈕,或者選擇“View”菜單中的“ObjectBrowser”命令,打開對象瀏覽器。656.6.6Tab順序編輯器利用Tab順序編輯器(TabOrderEditor),可以設(shè)置用戶按鍵盤上的Tab鍵時,對象被選中的先后順序。選擇“Tools”菜單中的“TabOrderEditor”命令,即可打開Tab順序編輯器。666.7圖形用戶界面編程6.7.1建立控件對象6.7.2建立用戶菜單6.7.3建立快捷菜單676.7.1建立控件對象MATLAB提供了用于建立控件對象的函數(shù)uicontrol,其調(diào)用格式為對象句柄=uicontrol(圖形窗口句柄,屬性名1,屬性值1,屬性名2,屬性值2,…)例如,在圖形窗口上生成一個滑動條:fh=figure('position',[100,200,320,160]);sh=uicontrol(fh,'Style','slider',...'Max',100,'Min',0,'Value',25,...'SliderStep',[0.050.2],...'Position',[6010015030]);686.7.2建立用戶菜單通過將圖形窗口的MenuBar屬性設(shè)置為none,可取消圖形窗口默認的菜單。建立用戶菜單可用uimenu函數(shù),因其調(diào)用方法不同,該函數(shù)可以用于建立一級菜單項和子菜單項。該函數(shù)調(diào)用格式:一級菜單項句柄=uimenu(圖形窗口句柄,屬性名1,屬性值1,屬性名2,屬性值

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論