MATLAB是一款功能強(qiáng)大的軟件,,我們不僅可以通過編寫代碼來實(shí)現(xiàn)各種功能,還可以使用它的GUI(Graphical User Interface)界面,,讓我們編寫的程序,,通過圖形直觀地輸出。接下來我就通過一個(gè)簡單例子大概介紹介紹一下GUI界面的編寫的過程,,并進(jìn)行封裝生成exe文件,,即使不打開Matlab也可以獨(dú)立運(yùn)行,真正打造屬于你自己的App,。 首先,,我們來新建一個(gè)GUI界面,我們可以通過再命令行窗口輸入guide,來打開新建GUI界面或者通過依此點(diǎn)擊>新建>App>GUIDE 來打開新建GUI界面的窗口,,具體如下圖所顯示 已保存 新建一個(gè)空的GUI后,,會(huì)彈出一個(gè)窗口,,如下圖所示 可以看可以看到界面的左邊有很多的小圖標(biāo),,這些就是GUI中的控件也是我們要進(jìn)行操作的對(duì)象,。不同的控件具有不同的功能,有只用來顯示文字的文本框,、可編輯的文本框,、按鈕等等。我就不做一一介紹,,在這里只介紹幾個(gè)簡單常用的控件,,如下圖所示。 圖中列舉了幾個(gè)簡單常用的控件,,我們從上到下依次介紹
接下來就是在GUI中如何來操作這些控件,,在此之前,,我們需要先來了解,我們能操縱控件的什么(也就是控件的屬性),??丶加心男傩阅兀覀円钥删庉嬑谋緸槔稣f明,,當(dāng)我們新建一個(gè)可編輯文本后,,雙擊這個(gè)控件,就會(huì)彈出下圖所示的界面 界面左側(cè)就是可編輯文本框各個(gè)屬性的名稱如字體大小,、字體顏色、‘String’等等,,右邊對(duì)應(yīng)了屬性的值或者內(nèi)容,,我們可以在這里進(jìn)行直接編輯或者像通過代碼進(jìn)行編輯,。同樣的我們也可以通過代碼來獲取控件各個(gè)屬性,,正是基于這個(gè)我們才能通過GUI來實(shí)現(xiàn)各個(gè)控件的聯(lián)動(dòng),從而實(shí)現(xiàn)我們想要達(dá)到的效果,。在屬性界面,,尤其要注意的就是圖上中紅色框框標(biāo)出的部分,見下圖,。 String的內(nèi)容表示了控件顯示出來的文本,Style則是控件的類型,,Tag表示了控件的名稱,。在編寫代碼的時(shí)候我們通常會(huì)使用set這個(gè)語句來設(shè)置某個(gè)控件的屬性或者使用get來獲得某個(gè)控件的屬性。下面我們以一個(gè)簡單的例子來演示GUI界面的編寫過程,。 現(xiàn)如今房價(jià)越來越貴,,大家買房子的時(shí)候很少有人會(huì)取全款買房,貸款買房是大多數(shù)人的選擇,??墒琴J款的時(shí)候不同的利率,不同的還款方式,,貸款的金額,,年限等等都會(huì)影響我們最后的還款金額。那么我們?cè)谶@里就用Matlab的GUI界面來做一個(gè)貸款A(yù)pp吧,??紤]到貸款要考慮的因素,我們可以設(shè)計(jì)如下的GUI界面 紅色框框用到了靜態(tài)文本用來表明左側(cè)的文本對(duì)應(yīng)的內(nèi)容是什么,,綠色框框用到了可編輯文本,在運(yùn)行GUI界面的時(shí)候我們可以改動(dòng)里面的內(nèi)容,。藍(lán)色的是 彈出式菜單,,對(duì)應(yīng)的里面設(shè)置的是還款方式(等額本金和等額本息),我們?cè)谄銼tring屬性里面設(shè)置 如下圖: 在String里面每一行表示一個(gè)選項(xiàng),,我們對(duì)應(yīng)的分別是等額本金和等額本息。黃色框框就是坐標(biāo)軸控件,,這里用來顯示我們貸款后每個(gè)月還款的金額,。紫色框框里面用到的是按鈕控件,,我們預(yù)計(jì)的結(jié)果就是所有參數(shù)輸入完畢后點(diǎn)擊一下按鈕,,就能在坐標(biāo)軸里面顯示每個(gè)月的還款額度,并在最下面輸出我們總共要付的利息,。對(duì)于可編輯的控件當(dāng)我們使用鼠標(biāo)右鍵單機(jī)的時(shí)候會(huì)彈出一個(gè)對(duì)話框,,我們可以在“查看回調(diào)”對(duì)應(yīng)的下拉選項(xiàng)中選擇一個(gè)編程來實(shí)現(xiàn)功能,,最長用到的就是callback,。比如在我們的例子中要實(shí)現(xiàn)鼠標(biāo)左鍵單擊‘計(jì)算’按鈕,,在界面輸出貸款結(jié)果,那么我們可以鼠標(biāo)右鍵單擊計(jì)算按鈕,,點(diǎn)開查看回調(diào)中的callback,,來創(chuàng)建‘計(jì)算’這個(gè)按鈕控件的回調(diào)函數(shù)。如下圖: 點(diǎn)開之后就會(huì)出現(xiàn)一個(gè)代碼框如下圖 圖中function pushbutton3_Callback(~,,~handles)就是‘計(jì)算’按鈕的的回調(diào)函數(shù),,由于我這之前沒有更改計(jì)算按鈕的Tag屬性(也就是控件的ID),所以這里現(xiàn)實(shí)的是pushbutton3,當(dāng)我們改表屬性Tag為pushbutton_jisuan,然后顯示就變成了下圖所示 然后我們就可以在里面輸入代碼來實(shí)現(xiàn)我們想要的功能。在我們這個(gè)例子中,,整個(gè)GUI只需要在這里編寫代碼,,具體代碼如下: huankuan=get(handles.popupmenu_huankuan,'Value');%通過讀取控件Value來獲取貸款方式 r=str2double(get(handles.edit_lilv,'string'))*...%換行 (1 str2double(get(handles.edit_fudong,'string'))/100)/1200;%獲取并計(jì)算月利率 yihang=get(handles.edit_yinhang,'String');%獲取貸款銀行 H=str2double(get(handles.edit_daikuannian,'string'))*12;%獲取貸款期數(shù) P=str2double(get(handles.edit_jine,'string')); axes(handles.axes1); switch huankuan case 1 % 等額本金 for M=1:H A(M)=P*10000/H (1-(M-1)/H)*P*r*10000;%等額本金計(jì)算公式 end plot([1:H],A) % ylim([min(A)-500 max(A) 500]); xlim([0 H]); title(yihang); ylabel('每月還款金額(元)'); xlabel('還款月份'); case 2 % 等額本息 for M=1:H A(M)=P*10000*r*((1 r)^H/((1 r)^H-1)); end plot([1:H],A) xlim([0 H]); title(yihang) ylabel('每月還款金額(元)'); xlabel('還款月份'); end L=(sum(A)-P*10000)/10000;%計(jì)算總利息 set(handles.text_lixi,'String',num2str(L));%在文本框lixi中顯示總利息 對(duì)于新手來說一定要注意handles.xxx,這里的xxx對(duì)應(yīng)的是每個(gè)控件的Tag,。還有就是要注意數(shù)據(jù)的屬性,,要顯示出來的都是字符型,,我們直接從控件讀取的都是字符型,,需要使用str2double或者str2num函數(shù)轉(zhuǎn)換成可以計(jì)算的數(shù)字型。同樣的,,當(dāng)我們通過代碼設(shè)置控件的‘String’屬性的時(shí)候需要將計(jì)算的數(shù)字用num2str轉(zhuǎn)換成字符型才能使用,。 都弄好之后我們點(diǎn)擊保存,命名為daikuan,。然后我們就能看到有兩個(gè)文件保存了下來,,如下圖 分別是m文件和fig文件,,對(duì)應(yīng)的是代碼文件和圖形界面文件,,兩個(gè)文件之間是相互聯(lián)動(dòng)的,想要運(yùn)行我們剛剛編寫好的GUI,這兩個(gè)文件去缺一不可,。 當(dāng)這兩個(gè)文件在Matlab的工作路徑下的時(shí)候我們可以雙擊fig文件打開GUI或者雙擊m文件,,然后點(diǎn)擊編輯器里面的‘運(yùn)行’按鈕打開GUI。打開后的界面如下圖所示 假如我們選擇工商銀行貸款,,貸款金額為100萬元,貸款期限為30年,,年利率是4.9%,,利率上浮20%。那么選用等額本金和等額本息的計(jì)算出來的還款圖就如下圖所示 最后我們把制作好的GUI界面封裝成exe文件來脫離Matlab獨(dú)立運(yùn)行。我們可以在命令行窗口輸入deploytool這個(gè)代碼或者通過Matlab>App>Application Compiler,,來打開Application Compiler,。打開后如下圖所示 在選好daikuai.m文件后,,我們還可以自己設(shè)置App圖標(biāo)以及各種軟件信息,,如下圖 輸出有兩種,,一種文件較小,,運(yùn)行的時(shí)候需要額外安裝一些軟件(如果已經(jīng)裝了Matlab則不需要),,另一種文件很大是可以完全獨(dú)立運(yùn)行的(不需要安裝Matlab)。這里我們選擇最小的那個(gè),,然后點(diǎn)擊Package進(jìn)行封裝生成EXE文件,。然后找到生成文件路徑,雙擊打開新生成for_test文件夾下的daikuan,,同樣也能夠開始貸款計(jì)算啦,,此時(shí)你不需要運(yùn)行Matlab! |
|