




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、基于MATLAB的計(jì)算器制作從入門(mén)到高級(jí)項(xiàng)目一、建立GUI框架1,雙擊MATLAB圖標(biāo)(本實(shí)例使用的是MATLAB R2014),打開(kāi)軟件2,打開(kāi)GUI操作界面。有兩種方式:a、在命令行窗口 輸入guide,然后點(diǎn)擊回車(chē)。b、先點(diǎn)擊新建圖標(biāo),在選擇圖形用戶(hù)界面。得到如下窗口:左上方有兩個(gè)按鈕:新建GUI,打開(kāi)現(xiàn)有GUI。對(duì)于新建GUI:下方的選擇框內(nèi)有你可以選擇建立的GUI類(lèi)型,對(duì)于初學(xué)者一般選擇第一個(gè)。下方是用來(lái)設(shè)置保存文件位置的。對(duì)于打開(kāi)現(xiàn)有GUI :初學(xué)者可能會(huì)在網(wǎng)上下載一些GUI源程序,使用打開(kāi)現(xiàn)有GUI,再瀏覽到文件所在位置便可。3、構(gòu)建GUI框架:在選擇新建GUI并且確定后,會(huì)彈出
2、如下窗口:在窗口的左邊會(huì)有很多選項(xiàng),可以一個(gè)個(gè)拖動(dòng)編輯框內(nèi); 是不是發(fā)現(xiàn)這些選項(xiàng)發(fā)揮的作用剛好就是我們平常打開(kāi)一個(gè)網(wǎng)頁(yè)或者一個(gè)軟件進(jìn)行操作時(shí)的選擇按鈕。比較常見(jiàn)的有:按鈕、單選按鈕、拖動(dòng)條、彈出式菜單等??吹竭@里細(xì)心地朋友就會(huì)發(fā)現(xiàn),MATLAB GUI似乎可以開(kāi)發(fā)出大型軟件哦,只要你有足夠的想象力,當(dāng)你從一個(gè)小白進(jìn)階到一個(gè)高手之后,你可以做到的。 本次計(jì)算器制作只需要用到靜態(tài)文本(或者是動(dòng)態(tài)文本)用來(lái)做顯示器,按鈕(用來(lái)操作)。也可以添加一個(gè)面板用來(lái)修飾。在拖出的選項(xiàng)上雙擊,會(huì)得出該選項(xiàng)的屬性欄,比如說(shuō)雙擊一個(gè)按鈕選項(xiàng),你會(huì)得到:這個(gè)屬性框比較復(fù)雜,沒(méi)有必要一個(gè)個(gè)說(shuō)清楚(有興趣的可以自己研究,
3、其實(shí)理解起來(lái)也挺簡(jiǎn)單的) 本次計(jì)算器制作,我們只需要知道以下幾個(gè):u a、BackgroundColor取值為顏色的預(yù)定義字符或RGB數(shù)值;缺?。ň褪悄J(rèn)的意思)值為淺灰色;u b、ForegroundColor取值為顏色的預(yù)定義字符或RGB數(shù)值,該屬性定義控件對(duì)象標(biāo)題字符的顏色;缺省值為黑色;u c、String取值為字符串矩陣或塊數(shù)組,定義控件對(duì)象標(biāo)題或選項(xiàng)內(nèi)容;u d、FontName取值為控件標(biāo)題等字體的字庫(kù)名;u e、FontSize取值為數(shù)值,控制字體大?。籾 f、Tag取值為字符串,定義了控件的標(biāo)識(shí)值,在任何程序中都可以通過(guò)這個(gè)標(biāo)識(shí)值控制該控件對(duì)象;u g、Style取值可以是p
4、ushbutton(缺省值), radiobutton, checkbox, edit, text, slider, frame, popupmenu 或listbox;項(xiàng)目二、簡(jiǎn)單加法器的制作1、框架準(zhǔn)備加法器:使用靜態(tài)文本,在 string 處將文本修改為(加法器),在 fontsize可修改字體大小,在BackgroundColor處可修改背景顏色。白色編輯框:使用可編輯文本,同樣在 string 處把文本清除,在 fontsize修改字體大小。加號(hào)(+)、等號(hào)(=)按鈕:同理按上述方法修改文本和字體大小。2、程序準(zhǔn)備:先點(diǎn)擊加號(hào)右鍵選擇查看回調(diào)callback。會(huì)得到綠色字體(一般為M
5、ATLAB程序注釋?zhuān)┌鼑某绦颍@個(gè) + 程序就編輯在此段程序的下方,代表點(diǎn)擊該按鈕后將要執(zhí)行的命令。% - Executes on button press in pushbutton1.function pushbutton1_Callback(hObject, eventdata, handles)% hObject handle to pushbutton1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and us
6、er data (see GUIDATA)a=get(handles.edit1,string);b=get(handles.edit2,string);c=str2num(a)+str2num(b);set(handles.edit3,string,c)3、程序閱讀 a=get(handles.edit1,string); MATLAB的一大亮點(diǎn)就是它包含了大量功能強(qiáng)大的函數(shù),初學(xué)者在編寫(xiě)MATLAB命令時(shí),只需要明確函數(shù)調(diào)用時(shí)的格式,再輸入相應(yīng)的數(shù)據(jù)即可。通??梢园俣人阉骱瘮?shù)格式、功能及其用法?;蛘呓柚鶰ATLAB本身的help命令:在命令行窗口中輸入 help get 再按回車(chē)便會(huì)得到檢
7、索結(jié)果(再點(diǎn)擊get的參考頁(yè))。這里有詳細(xì)的函數(shù)介紹(全英文,要求有一定的英文水平哦)回到程序段a=表示把右邊的運(yùn)算結(jié)果賦值給a get是函數(shù),()內(nèi)為運(yùn)用該函數(shù)時(shí)需要輸入的一些相關(guān)量 handles.(注意符號(hào)哦,此處為點(diǎn)而不是逗號(hào)),為函數(shù)句柄,不深究。edit1,string:表示獲取edit1的字符串,string 是該函數(shù)內(nèi)不能缺少的一個(gè)量,string字面意思是字符串,通俗來(lái)說(shuō)就是edit1中的內(nèi)容為字符串。這里又涉及到edit1和字符串兩個(gè)概念 edit1雙擊編輯框按鈕打開(kāi)屬性:找到如下兩個(gè)選項(xiàng)上文提到Tag取值為字符串,定義了控件的標(biāo)識(shí)值,在任何程序中都可以通過(guò)這個(gè)標(biāo)識(shí)值控制該
8、控件對(duì)象;既然要對(duì)可編輯文本進(jìn)行操作,那么函數(shù)中自然免不了加入文本的標(biāo)識(shí)值(記住它放在get函數(shù)中的位置就行) 字符串在MATLAB中一串?dāng)?shù)字可以有兩個(gè)身份:數(shù)字和字符串。當(dāng)它是數(shù)字的時(shí)候可以正常的運(yùn)算,而當(dāng)他是字符時(shí),就類(lèi)似一段文字,沒(méi)有辦法對(duì)它進(jìn)行運(yùn)算處理的(當(dāng)然作為字符串處理時(shí)有它的優(yōu)勢(shì))。我們可以調(diào)用相關(guān)函數(shù)來(lái)達(dá)到字符串和數(shù)字的相互轉(zhuǎn)換。a=get(handles.edit1,string); 通過(guò)以上分析,這條代碼的意思就很明確了:獲取edit1內(nèi)的字符串(string)再賦值給ab=get(handles.edit2,string);意思同上c=str2num(a)+str2num
9、(b);現(xiàn)在a和b的屬性都是字符串。函數(shù)str2num的功能是把字符轉(zhuǎn)換成數(shù)字,轉(zhuǎn)換之后就可以計(jì)算了。set(handles.edit3,string,c)set為輸出函數(shù),格式與get類(lèi)似,括號(hào)內(nèi)多了一個(gè)c,意思很明顯了,當(dāng)然就是輸出c的值了(這里數(shù)字可以不用轉(zhuǎn)換可以直接作為字符串輸出)。4、代碼總結(jié): 1、a=get(handles.edit1,string); 2、b=get(handles.edit2,string);3、c=str2num(a)+str2num(b);4、set(handles.edit3,string,c)(1)、把edit1內(nèi)的字符串賦值給a;(2)、把edit2
10、內(nèi)的字符串賦值給b;(3)、分別把a(bǔ)、b字符串轉(zhuǎn)換成數(shù)字,相加后賦值給c;(4)、在edit3內(nèi)輸出字符串c。5、運(yùn)行結(jié)果在a框中輸入25,b框中輸入23.再點(diǎn)擊+,結(jié)果35顯示在c框項(xiàng)目三、簡(jiǎn)單可編輯計(jì)算器的制作1、框架準(zhǔn)備材料:可編輯文本、靜態(tài)文本,按鈕。說(shuō)明:除了項(xiàng)目2介紹的操作方法外,在設(shè)置可編輯文本時(shí),在屬性欄中有:可以設(shè)定對(duì)其方式,一般選定向右對(duì)齊。2、程序準(zhǔn)備:a=get(handles.edit1,string);b=eval(a);set(handles.edit1,string,b):a=get(handles.edit1,string);a=;set(handles.ed
11、it1,string,a);3、程序閱讀:a=get(handles.edit1,string);把edit1中的字符串賦給ab=eval(a);計(jì)算字符串a(chǎn)的表達(dá)式,并傳遞給bset(handles.edit1,string,b)在edit2中輸出b:a=get(handles.edit1,string);把edit1中的字符串賦給aa=;把a(bǔ)清空set(handles.edit1,string,a);在edit2中輸出a4、代碼總結(jié)eval:串演算指令。例:a=12+13;(單引號(hào)表示12+13為一個(gè)字符串)b=eval(a)結(jié)果:5、運(yùn)行結(jié)果1、輸入 12+232、點(diǎn)擊計(jì)算按鈕得到結(jié)果3
12、53、點(diǎn)擊清空,回到初始狀態(tài)項(xiàng)目四、簡(jiǎn)易入門(mén)計(jì)算器的制作1、框架準(zhǔn)備:材料:面板、靜態(tài)文本、按鈕、輔助線說(shuō)明:添加一個(gè)面板可以起到修飾作用,布局時(shí)一般使用輔助線對(duì)齊,從坐標(biāo)處下拉即可。2、程序準(zhǔn)備:a=get(handles.text1,string);b=strcat(a,1);set(handles.text1,string,b)(對(duì)應(yīng)的其他數(shù)字只需修改:b=strcat(a,1);處的1,改成對(duì)應(yīng)的數(shù)字即可):a=get(handles.text1,string);b=strcat(a,+);set(handles.text1,string,b)(對(duì)應(yīng)的其他數(shù)字只需修改:b=strcat
13、(a,+);處的+,改成對(duì)應(yīng)的符號(hào)即可):a=get(handles.text1,string);b=eval(a)set(handles.text1,string,b):a=get(handles.text1,string);n=length(a)a=a(1:n-1);set(handles.text1,string,a):a=get(handles.text1,string);a=;set(handles.text1,string,a)3、程序閱讀:a=get(handles.text1,string);%text1中字符串賦給ab=strcat(a,1); %在字符串a(chǎn)后面再添加一個(gè)1s
14、et(handles.text1,string,b)%在text1中輸出b:a=get(handles.text1,string);b=strcat(a,+);set(handles.text1,string,b)(解釋同上):a=get(handles.text1,string);%text1中字符串賦給an=length(a) %把a(bǔ)字符串的長(zhǎng)度的值賦給na=a(1:n-1);%a由n個(gè)字符變成n-1個(gè),去掉最后一個(gè)set(handles.text1,string,a)% 在text1中輸出a與見(jiàn)項(xiàng)目三4、代碼總結(jié)strcat函數(shù):字符串連接。例:Length函數(shù):本來(lái)是查看向量的維數(shù),因
15、為這里的字符串只有一行,所以可以用來(lái)查看字符串的長(zhǎng)度。例:5、運(yùn)行結(jié)果點(diǎn)擊按鈕輸入 1+3-6*8/5:點(diǎn)擊=按鈕點(diǎn)擊back按鈕:點(diǎn)擊C按鈕:項(xiàng)目五、計(jì)算器的第一次改進(jìn)問(wèn)題1:當(dāng)隨意點(diǎn)擊符號(hào)按鈕是,靜態(tài)文本中的顯示結(jié)果顯然不符合常理。改進(jìn)原則:隨意點(diǎn)擊符號(hào)按鈕時(shí)只出現(xiàn)最后一次點(diǎn)擊的符號(hào)問(wèn)題2、當(dāng)輸入的數(shù)字過(guò)多時(shí)無(wú)法全部顯示。改進(jìn)原則:字體達(dá)到一定數(shù)量時(shí)自動(dòng)縮放問(wèn)題3、一般的計(jì)算器待機(jī)時(shí),顯示屏上都會(huì)顯示0,但是項(xiàng)目四制作的計(jì)算器沒(méi)有任何顯示。改進(jìn)原則:待機(jī)時(shí)靜態(tài)文本中顯示0問(wèn)題1解決方案1、程序設(shè)計(jì):a=get(handles.text1,string);l=length(a); if(a(
16、l)=+|a(l)=-|a(l)=*|a(l)=/) a=a(1:l-1); end%這是一個(gè)條件語(yǔ)句:當(dāng)在點(diǎn)擊本按鈕前,如果字符串a(chǎn)的最后一個(gè)字符是+或-或*或/時(shí),先刪除此字符,再顯示該按鈕內(nèi)的字符。b=strcat(a,*);set(handles.text1,string,b)2、代碼總結(jié)上述代碼使用了if循環(huán),結(jié)合了或(|)判斷字符或(|)且(&)非()。例:3、運(yùn)行結(jié)果:略問(wèn)題2解決方案程序設(shè)計(jì)(注:此處以1鍵為例,其他數(shù)字鍵包括=、back鍵做同樣的修改):a=get(handles.text1,string);b=strcat(a,1);n=length(b)if(n10&n1
17、5&n20&n25&n=50) size=8;end%此if循環(huán)是通過(guò)檢測(cè)字符串b的長(zhǎng)度來(lái)不斷變換size的值,在下面的set函數(shù)中有fontsize,sizefontsize:字體大小控制標(biāo)識(shí)Size: 字體大小set(handles.text1,string,b,fontsize,size)代碼總結(jié):set(handles.text1,string,b,fontsize,16) 如果我們把函數(shù) set 通俗化有:Set(句柄(handles).控制tag為text1的靜態(tài)文本(text1),靜態(tài)文本以字符串的形式存在( string),要輸出的量(b),調(diào)整字體大小( fontsize),
18、字體的確切大?。〝?shù)字)(size)運(yùn)行結(jié)果: 數(shù)字變多時(shí),字體自動(dòng)減小: 點(diǎn)擊=輸出結(jié)果,因結(jié)果字?jǐn)?shù)較少,字體有自動(dòng)變大問(wèn)題3解決方案前期準(zhǔn)備:先雙擊靜態(tài)文本,彈出屬性框,找到如下選項(xiàng)輸入數(shù)字0,這樣每次啟動(dòng)計(jì)算器是,顯示器中就有0了。程序準(zhǔn)備:(其它符號(hào)鍵做一致修改):a=get(handles.text1,string);n=length(a)if(n10&n15&n20&n25&n=50) size=8;end if(strcmp(a,0)=1)%判斷字符串a(chǎn)是否是0 set(handles.text1,string,1,fontsize,size)%如果是,在靜態(tài)文本中輸出1elsea=strcat(a,1);&如果不是,在字符串a(chǎn)后面再添加1set(handles.text1,string,a,fontsize,size)end:a=get(handles.text1,string);a=0;%不完全清空,最后在靜態(tài)文本中輸出0set(handles.text1,string,a):a = get
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 校園伙伴日常管理制度
- 校園后期安全管理制度
- 校園安全通道管理制度
- 校園日常衛(wèi)生管理制度
- 校園物業(yè)保安管理制度
- 校園綠化基地管理制度
- 校園貸款規(guī)范管理制度
- 生物發(fā)光藥物遞送-洞察及研究
- 2024年綜合數(shù)據(jù)采集傳輸系統(tǒng)資金籌措計(jì)劃書(shū)代可行性研究報(bào)告
- 醫(yī)院勞動(dòng)紀(jì)律方管理獎(jiǎng)懲規(guī)定
- 2024年中國(guó)鐵路成都局集團(tuán)有限公司招聘考試《鐵路基本常識(shí)》真題庫(kù)及答案
- 生態(tài)草場(chǎng)使用權(quán)轉(zhuǎn)讓協(xié)議
- 第18課清朝的邊疆治理教學(xué)設(shè)計(jì)-統(tǒng)編版七年級(jí)歷史下冊(cè)
- 物流實(shí)操試題及答案詳解
- 播出設(shè)備檢修管理制度
- 醫(yī)院醫(yī)保獎(jiǎng)懲管理制度
- 2025年中級(jí)經(jīng)濟(jì)師之中級(jí)經(jīng)濟(jì)師金融專(zhuān)業(yè)題庫(kù)練習(xí)試卷A卷附答案
- Python數(shù)據(jù)科學(xué)與機(jī)器學(xué)習(xí)結(jié)合試題及答案
- 海鮮水產(chǎn)電商商業(yè)計(jì)劃書(shū)
- 托育轉(zhuǎn)讓合同協(xié)議書(shū)
- 2025江西中考:政治必背知識(shí)點(diǎn)
評(píng)論
0/150
提交評(píng)論