




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、基于MATLAB的計算器制作從入門到高級項目一、建立GUI框架1,雙擊MATLAB圖標(本實例使用的是MATLAB R2014),打開軟件2,打開GUI操作界面。有兩種方式:a、在命令行窗口 輸入guide,然后點擊回車。b、先點擊新建圖標,在選擇圖形用戶界面。得到如下窗口:左上方有兩個按鈕:新建GUI,打開現(xiàn)有GUI。對于新建GUI:下方的選擇框內(nèi)有你可以選擇建立的GUI類型,對于初學(xué)者一般選擇第一個。下方是用來設(shè)置保存文件位置的。對于打開現(xiàn)有GUI :初學(xué)者可能會在網(wǎng)上下載一些GUI源程序,使用打開現(xiàn)有GUI,再瀏覽到文件所在位置便可。3、構(gòu)建GUI框架:在選擇新建GUI并且確定后,會彈出
2、如下窗口:在窗口的左邊會有很多選項,可以一個個拖動編輯框內(nèi); 是不是發(fā)現(xiàn)這些選項發(fā)揮的作用剛好就是我們平常打開一個網(wǎng)頁或者一個軟件進行操作時的選擇按鈕。比較常見的有:按鈕、單選按鈕、拖動條、彈出式菜單等??吹竭@里細心地朋友就會發(fā)現(xiàn),MATLAB GUI似乎可以開發(fā)出大型軟件哦,只要你有足夠的想象力,當(dāng)你從一個小白進階到一個高手之后,你可以做到的。 本次計算器制作只需要用到靜態(tài)文本(或者是動態(tài)文本)用來做顯示器,按鈕(用來操作)。也可以添加一個面板用來修飾。在拖出的選項上雙擊,會得出該選項的屬性欄,比如說雙擊一個按鈕選項,你會得到:這個屬性框比較復(fù)雜,沒有必要一個個說清楚(有興趣的可以自己研究,
3、其實理解起來也挺簡單的) 本次計算器制作,我們只需要知道以下幾個:u a、BackgroundColor取值為顏色的預(yù)定義字符或RGB數(shù)值;缺?。ň褪悄J的意思)值為淺灰色;u b、ForegroundColor取值為顏色的預(yù)定義字符或RGB數(shù)值,該屬性定義控件對象標題字符的顏色;缺省值為黑色;u c、String取值為字符串矩陣或塊數(shù)組,定義控件對象標題或選項內(nèi)容;u d、FontName取值為控件標題等字體的字庫名;u e、FontSize取值為數(shù)值,控制字體大小;u f、Tag取值為字符串,定義了控件的標識值,在任何程序中都可以通過這個標識值控制該控件對象;u g、Style取值可以是p
4、ushbutton(缺省值), radiobutton, checkbox, edit, text, slider, frame, popupmenu 或listbox;項目二、簡單加法器的制作1、框架準備加法器:使用靜態(tài)文本,在 string 處將文本修改為(加法器),在 fontsize可修改字體大小,在BackgroundColor處可修改背景顏色。白色編輯框:使用可編輯文本,同樣在 string 處把文本清除,在 fontsize修改字體大小。加號(+)、等號(=)按鈕:同理按上述方法修改文本和字體大小。2、程序準備:先點擊加號右鍵選擇查看回調(diào)callback。會得到綠色字體(一般為M
5、ATLAB程序注釋)包圍的程序,這個 + 程序就編輯在此段程序的下方,代表點擊該按鈕后將要執(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的一大亮點就是它包含了大量功能強大的函數(shù),初學(xué)者在編寫MATLAB命令時,只需要明確函數(shù)調(diào)用時的格式,再輸入相應(yīng)的數(shù)據(jù)即可。通常可以百度搜索函數(shù)格式、功能及其用法?;蛘呓柚鶰ATLAB本身的help命令:在命令行窗口中輸入 help get 再按回車便會得到檢
7、索結(jié)果(再點擊get的參考頁)。這里有詳細的函數(shù)介紹(全英文,要求有一定的英文水平哦)回到程序段a=表示把右邊的運算結(jié)果賦值給a get是函數(shù),()內(nèi)為運用該函數(shù)時需要輸入的一些相關(guān)量 handles.(注意符號哦,此處為點而不是逗號),為函數(shù)句柄,不深究。edit1,string:表示獲取edit1的字符串,string 是該函數(shù)內(nèi)不能缺少的一個量,string字面意思是字符串,通俗來說就是edit1中的內(nèi)容為字符串。這里又涉及到edit1和字符串兩個概念 edit1雙擊編輯框按鈕打開屬性:找到如下兩個選項上文提到Tag取值為字符串,定義了控件的標識值,在任何程序中都可以通過這個標識值控制該
8、控件對象;既然要對可編輯文本進行操作,那么函數(shù)中自然免不了加入文本的標識值(記住它放在get函數(shù)中的位置就行) 字符串在MATLAB中一串?dāng)?shù)字可以有兩個身份:數(shù)字和字符串。當(dāng)它是數(shù)字的時候可以正常的運算,而當(dāng)他是字符時,就類似一段文字,沒有辦法對它進行運算處理的(當(dāng)然作為字符串處理時有它的優(yōu)勢)。我們可以調(diào)用相關(guān)函數(shù)來達到字符串和數(shù)字的相互轉(zhuǎn)換。a=get(handles.edit1,string); 通過以上分析,這條代碼的意思就很明確了:獲取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)換之后就可以計算了。set(handles.edit3,string,c)set為輸出函數(shù),格式與get類似,括號內(nèi)多了一個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字符串轉(zhuǎn)換成數(shù)字,相加后賦值給c;(4)、在edit3內(nèi)輸出字符串c。5、運行結(jié)果在a框中輸入25,b框中輸入23.再點擊+,結(jié)果35顯示在c框項目三、簡單可編輯計算器的制作1、框架準備材料:可編輯文本、靜態(tài)文本,按鈕。說明:除了項目2介紹的操作方法外,在設(shè)置可編輯文本時,在屬性欄中有:可以設(shè)定對其方式,一般選定向右對齊。2、程序準備: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);計算字符串a(chǎn)的表達式,并傳遞給bset(handles.edit1,string,b)在edit2中輸出b:a=get(handles.edit1,string);把edit1中的字符串賦給aa=;把a清空set(handles.edit1,string,a);在edit2中輸出a4、代碼總結(jié)eval:串演算指令。例:a=12+13;(單引號表示12+13為一個字符串)b=eval(a)結(jié)果:5、運行結(jié)果1、輸入 12+232、點擊計算按鈕得到結(jié)果3
12、53、點擊清空,回到初始狀態(tài)項目四、簡易入門計算器的制作1、框架準備:材料:面板、靜態(tài)文本、按鈕、輔助線說明:添加一個面板可以起到修飾作用,布局時一般使用輔助線對齊,從坐標處下拉即可。2、程序準備:a=get(handles.text1,string);b=strcat(a,1);set(handles.text1,string,b)(對應(yīng)的其他數(shù)字只需修改:b=strcat(a,1);處的1,改成對應(yīng)的數(shù)字即可):a=get(handles.text1,string);b=strcat(a,+);set(handles.text1,string,b)(對應(yīng)的其他數(shù)字只需修改:b=strcat
13、(a,+);處的+,改成對應(yīng)的符號即可):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)后面再添加一個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字符串的長度的值賦給na=a(1:n-1);%a由n個字符變成n-1個,去掉最后一個set(handles.text1,string,a)% 在text1中輸出a與見項目三4、代碼總結(jié)strcat函數(shù):字符串連接。例:Length函數(shù):本來是查看向量的維數(shù),因
15、為這里的字符串只有一行,所以可以用來查看字符串的長度。例:5、運行結(jié)果點擊按鈕輸入 1+3-6*8/5:點擊=按鈕點擊back按鈕:點擊C按鈕:項目五、計算器的第一次改進問題1:當(dāng)隨意點擊符號按鈕是,靜態(tài)文本中的顯示結(jié)果顯然不符合常理。改進原則:隨意點擊符號按鈕時只出現(xiàn)最后一次點擊的符號問題2、當(dāng)輸入的數(shù)字過多時無法全部顯示。改進原則:字體達到一定數(shù)量時自動縮放問題3、一般的計算器待機時,顯示屏上都會顯示0,但是項目四制作的計算器沒有任何顯示。改進原則:待機時靜態(tài)文本中顯示0問題1解決方案1、程序設(shè)計:a=get(handles.text1,string);l=length(a); if(a(
16、l)=+|a(l)=-|a(l)=*|a(l)=/) a=a(1:l-1); end%這是一個條件語句:當(dāng)在點擊本按鈕前,如果字符串a(chǎn)的最后一個字符是+或-或*或/時,先刪除此字符,再顯示該按鈕內(nèi)的字符。b=strcat(a,*);set(handles.text1,string,b)2、代碼總結(jié)上述代碼使用了if循環(huán),結(jié)合了或(|)判斷字符或(|)且(&)非()。例:3、運行結(jié)果:略問題2解決方案程序設(shè)計(注:此處以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)是通過檢測字符串b的長度來不斷變換size的值,在下面的set函數(shù)中有fontsize,sizefontsize:字體大小控制標識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)運行結(jié)果: 數(shù)字變多時,字體自動減?。?點擊=輸出結(jié)果,因結(jié)果字數(shù)較少,字體有自動變大問題3解決方案前期準備:先雙擊靜態(tài)文本,彈出屬性框,找到如下選項輸入數(shù)字0,這樣每次啟動計算器是,顯示器中就有0了。程序準備:(其它符號鍵做一致修改):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. 本站所有資源如無特殊說明,都需要本地電腦安裝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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 合作委托協(xié)議合同范本
- 個人鋁板出售合同范本
- 國際外貿(mào)采購合同范本
- 國有劃撥土地購房合同范例
- 土地托管意向合同范本
- 制作加工服務(wù)合同范本
- 噴塑噴漆合同范本
- 哈爾濱合同范本
- 個人投資土地入股合同范本
- 個人合作種植合同范本
- 雙梁橋式起重機小車改造方案
- 新能源發(fā)電技術(shù) 課件 第一章-新能源發(fā)電概述
- 《我的伯父魯迅先生》課件
- 青格達湖自然保護區(qū)外來入侵植物調(diào)查
- 中醫(yī)醫(yī)療技術(shù)手冊2013普及版
- 部編版六年級下冊數(shù)學(xué)教學(xué)計劃(及進度表)
- 會計學(xué)生學(xué)情分析總結(jié)
- 大學(xué)英語六級考試
- 新質(zhì)生產(chǎn)力:中國創(chuàng)新發(fā)展的著力點與內(nèi)在邏輯
- 中考數(shù)學(xué)第二輪復(fù)習(xí)教案
- (2024年)職業(yè)健康培訓(xùn)課件(PPT9)
評論
0/150
提交評論