版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、用MATLAB GUI設(shè)計(jì)簡(jiǎn)單計(jì)算器摘要基于MATLAB GUI的計(jì)算器設(shè)計(jì)是利用GUIDE創(chuàng)建圖形用戶界面進(jìn)行計(jì)算器設(shè)計(jì)。設(shè)計(jì)計(jì)算器時(shí),主要是考慮到計(jì)算器的易用性、功能的常用程度進(jìn)行計(jì)算器界面與功能的設(shè)計(jì)。通過調(diào)整控件和文本的布局及顏色,使界面簡(jiǎn)單大方、布局合理,達(dá)到界面友好的效果。 計(jì)算器設(shè)計(jì)時(shí)主要利用到get和set兩個(gè)函數(shù)進(jìn)行各個(gè)控件屬性值的傳遞和設(shè)置。計(jì)算器實(shí)現(xiàn)的功能有:數(shù)字09和小數(shù)點(diǎn)的輸入顯示,平方、開平方和對(duì)數(shù)的輸入顯示。進(jìn)行四則運(yùn)算、正弦計(jì)算、余弦計(jì)算、正切計(jì)算和余切計(jì)算,可以求階乘、求百分?jǐn)?shù)和求倒數(shù)??梢赃M(jìn)行括號(hào)及變量x與變量y的輸入,結(jié)合坐標(biāo)軸編輯框
2、和曲線顏色編輯框?qū)崿F(xiàn)函數(shù)的曲線繪制。最后運(yùn)行調(diào)試,實(shí)現(xiàn)基于MATLAB GUI的計(jì)算器的設(shè)計(jì)。MATLAB GUI介紹MATLAB是美國(guó)MathWorks公司出品的商業(yè)數(shù)學(xué)軟件,用于算法開發(fā)、數(shù)據(jù)可視化、數(shù)據(jù)分析以及數(shù)值計(jì)算的高級(jí)技術(shù)計(jì)算語言和交互式環(huán)境。MATLAB是matrix和laboratory兩個(gè)詞的組合,意為矩陣工廠,主要面對(duì)科學(xué)計(jì)算、可視化以及交互式程設(shè)計(jì)的高科技計(jì)算環(huán)境。MATLAB是將數(shù)值分析、矩陣計(jì)算、科學(xué)數(shù)據(jù)可視化以及非線性動(dòng)態(tài)系統(tǒng)的建模和仿真等諸多強(qiáng)大功能集成在一個(gè)易于使用的視窗環(huán)境中,為科學(xué)研究、工程設(shè)計(jì)以及必須進(jìn)行有效數(shù)值計(jì)算的眾多科學(xué)領(lǐng)域提供了
3、一種全面的解決方案,并在很大程度上擺脫了傳統(tǒng)非交互式程序設(shè)計(jì)語言的編輯模式,特別是所附帶的30多種面向不同領(lǐng)域的工具箱支持,使得它在許多科學(xué)領(lǐng)域中成為計(jì)算機(jī)輔助設(shè)計(jì)和分析、算法研究和應(yīng)用開發(fā)的基本工具和首選平臺(tái)。 MATLAB的圖形用戶界面(Graphical User Interface,簡(jiǎn)稱GUI,又稱圖形用戶接口)是指采用圖形方式顯示的計(jì)算機(jī)操作用戶界面。與早期計(jì)算機(jī)使用的命令行界面相比,圖形界面對(duì)于用戶來說在視覺上更易于接受。MATLAB的圖形用戶界(GUI)是由光標(biāo),窗口,菜單、文字說明等對(duì)象構(gòu)成一個(gè)用戶界面。用戶可以通過鍵盤輸入相關(guān)的參數(shù),通過鼠標(biāo)選
4、擇、激活這些對(duì)象,使計(jì)算機(jī)完成相關(guān)的計(jì)算或者繪制波形等功能。MATLAB的GUI為開發(fā)者提供了一個(gè)不脫離MATLAB的開發(fā)環(huán)境,有助于MATLAB程序的GUI集成。這樣可以使開發(fā)者不必理會(huì)一大堆煩雜的代碼,簡(jiǎn)化程序,但是同樣可以實(shí)現(xiàn)向決策者提供圖文并茂的界面,甚至達(dá)到多媒體的效果??梢哉fMATLAB提供了一個(gè)簡(jiǎn)便的開發(fā)環(huán)境,可以讓開發(fā)者快速上手,提高了開發(fā)者的工作效率。MATLAB的圖形界面設(shè)計(jì)是通過對(duì)各種圖形對(duì)象的操作來實(shí)現(xiàn)的,因此用戶在使用的過程需要深入了解各種圖形對(duì)象的特征、屬性和操作。由此可見,圖形用戶界面的設(shè)計(jì)、制作是一件比較繁瑣的工作。圖形用戶界面的創(chuàng)建一般有兩種常用的方式:第一是
5、通過使用m文件直接動(dòng)態(tài)添加控件;第二是使用GUIDE快速生成GUI界面。這兩種實(shí)現(xiàn)的方法都需要使用M語言編程,但是技術(shù)的側(cè)重點(diǎn)不同。所謂的GUIDE就是圖形用戶界面開發(fā)環(huán)境(Graphical User Interface Development Environment),它向用戶提供了一系列的創(chuàng)建用戶圖形界面的工具。這些工具大大簡(jiǎn)化了GUI設(shè)計(jì)和生成的過程。GUIDE可以完成的任務(wù)有如下兩點(diǎn):第一是輸出GUI,第二是GUI編程。GUIDE實(shí)際上是一套MATLAB工具集。打開GUIDE,新建并且保存后,會(huì)生成相應(yīng)的fig文件和m文件,fig文件儲(chǔ)存有圖形
6、用戶界面的外形、菜單構(gòu)架等信息;m文件則儲(chǔ)存設(shè)計(jì)的程序部分,如主程序、回調(diào)函數(shù)(Callback)等。在Layout編輯視圖,可以使用如下工具:布局編輯器(Layout Editor),對(duì)齊工具(Alignment Tool),對(duì)象屬性觀察器(Property Inspector),對(duì)象瀏覽器(Object Browser),菜單編輯器Menu Editor)。新建一個(gè)布局,可以在新窗口中添加各種控件:靜態(tài)文本(Static Text),編輯(Edit Text),列表框(List box),滾動(dòng)條(Slider)
7、,按鈕(Push button),開關(guān)按鈕(Toggle Button),單選按鈕(Radio button),按鈕組(Button Group),檢查框(Check Box),彈出式菜單(Popup Menu),坐標(biāo)軸(Axes),面板(Panel)。每個(gè)控件的屬性中都含有多個(gè)參數(shù),對(duì)應(yīng)各個(gè)參數(shù),可以對(duì)控件的外觀,位置等各方面屬性進(jìn)行修改。其實(shí)GUIDE創(chuàng)建圖形用戶界面的基礎(chǔ)也是圖形句柄對(duì)象,只不過是具有很好的封裝,使用起來簡(jiǎn)便,而且還能夠做到可視化的開發(fā),對(duì)于一般的用戶使用GUIDE創(chuàng)建圖形用戶界面應(yīng)用程序已經(jīng)足夠了。本文利用GU
8、IDE創(chuàng)建圖形用戶界面進(jìn)行計(jì)算器設(shè)計(jì),設(shè)計(jì)GUI界面時(shí),應(yīng)使總體界面簡(jiǎn)單大方、控件布局合理,最終達(dá)到總體界面友好的效果。本次利用GUIDE創(chuàng)建圖形用戶界面進(jìn)行計(jì)算器設(shè)計(jì)。設(shè)計(jì)計(jì)算器時(shí),主要是考慮到計(jì)算器的易用性、功能的常用程度進(jìn)行計(jì)算器界面與功能的設(shè)計(jì)。通過調(diào)整控件和文本的布局及顏色,使界面簡(jiǎn)單大方、布局合理,達(dá)到界面友好的效果。計(jì)算器設(shè)計(jì)時(shí)主要利用到get和set兩個(gè)函數(shù)進(jìn)行各個(gè)控件屬性值的傳遞和設(shè)置,利用strcat函數(shù)實(shí)現(xiàn)把兩個(gè)字符串連接起來。利用length函數(shù)來計(jì)算字符串的長(zhǎng)度實(shí)現(xiàn)后退的功能。利用eval函數(shù)將文本框中的字符串轉(zhuǎn)換成數(shù)值表達(dá)式,利用MATLAB計(jì)算出結(jié)果返回顯示。利用
9、坐標(biāo)軸axes和ezplot函數(shù)進(jìn)行圖形的繪制,利用factorial函數(shù)進(jìn)行求階乘運(yùn)算。利用str2num及num2str實(shí)現(xiàn)數(shù)值與字符之間的轉(zhuǎn)換。- 1 -用MATLAB GUI設(shè)計(jì)簡(jiǎn)單計(jì)算器一、設(shè)計(jì)目的:本題目通過MATLAB的gui程序設(shè)計(jì)較為簡(jiǎn)單,在gui設(shè)計(jì)中主要用到三種控件,文本編輯框(edit text),靜態(tài)文本框(Static text),命令按鈕(push button)。然后在通過各個(gè)按鈕的回調(diào)函數(shù),實(shí)現(xiàn)簡(jiǎn)單的計(jì)算功能。二、設(shè)計(jì)方案:利用MATLAB GUI設(shè)計(jì)實(shí)現(xiàn)一個(gè)圖形用戶界面的計(jì)算器程序,要求實(shí)現(xiàn):A.實(shí)現(xiàn)十進(jìn)制數(shù)的加、減、乘、除、簡(jiǎn)
10、單計(jì)算。B. 科學(xué)計(jì)算函數(shù),包括正弦、余弦、正切、余切、開方、指數(shù)等函數(shù)運(yùn)行。C. 能夠保存上次歷史計(jì)算的答案,先是答案存儲(chǔ)器中得內(nèi)容。D. 有清除鍵,能清除操作。 三、方案實(shí)施:通過MATLAB的gui程序設(shè)計(jì)較為簡(jiǎn)單,在gui設(shè)計(jì)中主要用到兩種控件,顯示框用到文本編輯框(edit text),說明框用到靜態(tài)文本框(Static text),數(shù)字以及運(yùn)算等按鈕用到命令按鈕(push button)。然后在通過各個(gè)按鈕的回調(diào)函數(shù),實(shí)現(xiàn)簡(jiǎn)單的計(jì)算功能。計(jì)算器程序由MATLAB代碼(.m文件)和GUI圖形(.fig)兩個(gè)部分組成。程序的使用方式是直接利用圖形界面中的按鍵鍵入所需數(shù)值、運(yùn)算符等,再按
11、等于號(hào)即可得出結(jié)果。首先用MATLAB GUI功能,在繪制一個(gè)靜態(tài)文本框和一個(gè)文本編輯框,以及24個(gè)命令按鈕,調(diào)整好各控件大小、顏色,整體布局如圖所示:圖-1 1、 布局GUI1).打開Matlab,輸入Guide 回車或者在工具欄上點(diǎn)擊圖標(biāo)出現(xiàn)Guide 窗口:圖22).然后雙擊“Blank GUI(Default)”出現(xiàn)GUI窗口圖-3 3).添加按鈕圖-4 4).根據(jù)按鈕的作用及視覺效果做一定的修改把按鈕的字符串大小、顏色進(jìn)行設(shè)置,對(duì)按鈕的位置進(jìn)行排布,盡量使按鈕集中在靜態(tài)文本框下面。最終設(shè)置的靜態(tài)文本框?yàn)榘咨?,其他按鈕均為分紅色。5).保存、添加功能函數(shù) 把做好的按鈕及靜態(tài)文本框保存后
12、自動(dòng)彈出Editor的M文本,對(duì)然后對(duì)相應(yīng)的pushbutton添加功能函數(shù)。以下是相應(yīng)按鈕的功能函數(shù)。(1)數(shù)字按鍵編寫。在function pushbutton1_Callback(hObject, eventdata, handles)下輸入:textString = get(handles.text1,'String');textString =strcat(textString,'0');set(handles.text1,'String',textString)這是使用句柄handles指向?qū)ο髏ext1,并以字符串形式來存儲(chǔ)數(shù)據(jù)文本
13、框text1的內(nèi)容,并存儲(chǔ)數(shù)個(gè)“0”,然后由set(handles.text1,'String','textString'在text1中輸出。同理,分別在function pushbutton210_Callback(hObject, eventdata, handles)下給19數(shù)字按鍵下編寫此類程序。(2).符號(hào)鍵:function pushbutton12_Callback(hObject, eventdata, handles)textString = get(handles.text1,'String');textString =str
14、cat(textString,'+');set(handles.text1,'String',textString)strcat的作用是將兩個(gè)字符串連接起來,就是在已輸入的存儲(chǔ)數(shù)據(jù)textString后添加“+”進(jìn)行運(yùn)算。然后執(zhí)行set(handles.text1,'String',textString)。符號(hào)鍵-、*、/與+的運(yùn)算函數(shù)類似?!捌椒竭\(yùn)算”,主要是由“2”功能實(shí)現(xiàn)。(3)運(yùn)算符“=”的編程:textString = get(handles.text1,'String');ans =eval(textString);“
15、eval”的作用是將符號(hào)表達(dá)式轉(zhuǎn)換成數(shù)值表達(dá)式。再由set(handles.text1,'String',ans)輸出。(4)按鍵“back”編程:即顯示一個(gè)空字符:set(handles.text1,'String','') ;按鍵“back”編程:textString = get(handles.text1,'String'); set(handles.text1,'String','') ; ss=char(textString);n=length(textString);textString
16、=ss(1:w-1);%將w個(gè)字符串轉(zhuǎn)成w-1個(gè),即刪除了末位字符set(handles.text1,'String',textString)(5)按鍵“清空”:把靜態(tài)文本框的字符清空,返回一個(gè)空格set(handles.text1,'String','')(6)三角函數(shù)的編輯function cos_Callback(hObject, eventdata, handles)textString=handles.text1;textString=cos(str2num(get(handles.text1,'String')*pi/
17、180);set(handles.text1,'String',num2str(textString)(get(handles.text1,'String')*pi/180是把角度轉(zhuǎn)換為弧度,這樣在編程環(huán)境中才能識(shí)別,cos才能起作用。然后執(zhí)行set函數(shù),把結(jié)果輸出來。同理在sin,tan的回調(diào)函數(shù)中夜輸入相應(yīng)的函數(shù),只需把textString=cos(str2num(get(handles.text1,'String')*pi/180);中的cos改為sin,tan即可(7)按鍵“退出”:關(guān)閉計(jì)算器close(gcf);2、計(jì)算器的使用加法運(yùn)算
18、(+): 圖-5 按“=”后顯示 圖-6 平方運(yùn)算: 圖-7 按“=”后顯示 圖-8 通過本次實(shí)驗(yàn)實(shí)現(xiàn)十進(jìn)制數(shù)的加、減、乘、除、簡(jiǎn)單計(jì)算對(duì)Matlab的操作有了進(jìn)一步的認(rèn)識(shí)和了解,通過多次的修改調(diào)查做出實(shí)驗(yàn),驗(yàn)證了實(shí)驗(yàn)的正確性,大大的提高了我們對(duì)Matlab功能的認(rèn)識(shí),培養(yǎng)了我們的興趣。3、 附各按鍵的程序源代碼:function pushbutton1_Callback(hObject, eventdata, handles)textString = get(handles.text1,'String');textString =strcat(textString,'
19、0');set(handles.text1,'String',textString)function pushbutton2_Callback(hObject, eventdata, handles)textString = get(handles.text1,'String');textString =strcat(textString,'1');set(handles.text1,'String',textString)function pushbutton3_Callback(hObject, eventdata,
20、handles)textString = get(handles.text1,'String');textString =strcat(textString,'2');set(handles.text1,'String',textString)function pushbutton4_Callback(hObject, eventdata, handles)textString = get(handles.text1,'String');textString =strcat(textString,'3');set(
21、handles.text1,'String',textString)function pushbutton5_Callback(hObject, eventdata, handles)textString = get(handles.text1,'String');textString =strcat(textString,'4');set(handles.text1,'String',textString)function pushbutton6_Callback(hObject, eventdata, handles)text
22、String = get(handles.text1,'String');textString =strcat(textString,'5');set(handles.text1,'String',textString)function pushbutton7_Callback(hObject, eventdata, handles)textString = get(handles.text1,'String');textString =strcat(textString,'6');set(handles.text
23、1,'String',textString)function pushbutton8_Callback(hObject, eventdata, handles)textString = get(handles.text1,'String');textString =strcat(textString,'7');set(handles.text1,'String',textString)function pushbutton9_Callback(hObject, eventdata, handles)textString = get
24、(handles.text1,'String');textString =strcat(textString,'8');set(handles.text1,'String',textString)function pushbutton10_Callback(hObject, eventdata, handles)textString = get(handles.text1,'String');textString =strcat(textString,'9');set(handles.text1,'Stri
25、ng',textString)function pushbutton11_Callback(hObject, eventdata, handles)textString = get(handles.text1,'String');textString =strcat(textString,'+');set(handles.text1,'String',textString)function pushbutton12_Callback(hObject, eventdata, handles)textString = get(handles.
26、text1,'String');textString =strcat(textString,'-');set(handles.text1,'String',textString)function pushbutton13_Callback(hObject, eventdata, handles)textString = get(handles.text1,'String');textString =strcat(textString,'*');set(handles.text1,'String',t
27、extString)function pushbutton14_Callback(hObject, eventdata, handles)textString = get(handles.text1,'String');textString =strcat(textString,'/');set(handles.text1,'String',textString)function pushbutton15_Callback(hObject, eventdata, handles)textString = get(handles.text1,
28、9;String');textString =strcat(textString,'.');set(handles.text1,'String',textString)function pushbutton16_Callback(hObject, eventdata, handles)textString = get(handles.text1,'String');ans =eval(textString);set(handles.text1,'String',ans)function pushbutton17_Callback(hObject, eventdata, handles)textString = get(handles.text1,'String');textString =strcat(textString,'2');set(handles.text1,'String',textString)function pushbutton18_Callback(hObject, eventdata, handles)textSt
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《板帶材生產(chǎn)概述》課件
- 《電子交易》課件
- DBJT 13-302-2018 現(xiàn)澆混凝土空心樓蓋應(yīng)用技術(shù)規(guī)程
- 第18課 從九一八事變到西安事變(解析版)
- 名著之魅 解析與啟示
- 體育場(chǎng)館衛(wèi)生消毒流程
- 腫瘤科護(hù)士年終總結(jié)
- 2023-2024年項(xiàng)目部安全管理人員安全培訓(xùn)考試題答案典型題匯編
- 2023年-2024年生產(chǎn)經(jīng)營(yíng)單位安全教育培訓(xùn)試題答案往年題考
- 外貿(mào)公司實(shí)習(xí)報(bào)告合集九篇
- 水電風(fēng)電項(xiàng)目審批核準(zhǔn)流程課件
- 足球教練員素質(zhì)和角色
- 初中八年級(jí)語文課件 桃花源記【省一等獎(jiǎng)】
- 名校長(zhǎng)工作總結(jié)匯報(bào)
- 商務(wù)接待禮儀流程
- 護(hù)理不良事件用藥錯(cuò)誤講課
- 新教材人教版高中英語選擇性必修第一冊(cè)全冊(cè)教學(xué)設(shè)計(jì)
- 2024北京大興區(qū)初三(上)期末化學(xué)試卷及答案
- 媒體與新聞法律法規(guī)法律意識(shí)與職業(yè)素養(yǎng)
- 推土機(jī)-推土機(jī)構(gòu)造與原理
- 九年級(jí)化學(xué)課程綱要
評(píng)論
0/150
提交評(píng)論