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