用MATLABGUI設(shè)計簡單計算器_第1頁
用MATLABGUI設(shè)計簡單計算器_第2頁
用MATLABGUI設(shè)計簡單計算器_第3頁
用MATLABGUI設(shè)計簡單計算器_第4頁
用MATLABGUI設(shè)計簡單計算器_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

--..--考試資料..>摘要基于MATLAB

GUI的計算器設(shè)計是利用GUIDE創(chuàng)立圖形用戶界面進展計算器設(shè)計。設(shè)計計算器時,主要是考慮到計算器的易用性、功能的常用程度進展計算器界面與功能的設(shè)計。通過調(diào)整控件和文本的布局及顏色,使界面簡單大方、布局合理,到達界面友好的效果。計算器設(shè)計時主要利用到get和set兩個函數(shù)進展各個控件屬性值的傳遞和設(shè)置。計算器實現(xiàn)的功能有:數(shù)字0~9和小數(shù)點的輸入顯示,平方、開平方和對數(shù)的輸入顯示。進展四則運算、正弦計算、余弦計算、正切計算和余切計算,可以求階乘、求百分數(shù)和求倒數(shù)。可以進展括號及變量*與變量y的輸入,結(jié)合坐標軸編輯框和曲線顏色編輯框?qū)崿F(xiàn)函數(shù)的曲線繪制。最后運行調(diào)試,實現(xiàn)基于MATLAB

GUI的計算器的設(shè)計。MATLABGUI介紹MATLAB是美國MathWorks公司出品的商業(yè)數(shù)學軟件,用于算法開發(fā)、數(shù)據(jù)可視化、數(shù)據(jù)分析以及數(shù)值計算的高級技術(shù)計算語言和交互式環(huán)境。MATLAB是matri*和laboratory兩個詞的組合,意為矩陣工廠,主要面對科學計算、可視化以及交互式程設(shè)計的高科技計算環(huán)境。MATLAB是將數(shù)值分析、矩陣計算、科學數(shù)據(jù)可視化以及非線性動態(tài)系統(tǒng)的建模和仿真等諸多強大功能集成在一個易于使用的視窗環(huán)境中,為科學研究、工程設(shè)計以及必須進展有效數(shù)值計算的眾多科學領(lǐng)域提供了一種全面的解決方案,并在很大程度上擺脫了傳統(tǒng)非交互式程序設(shè)計語言的編輯模式,特別是所附帶的30多種面向不同領(lǐng)域的工具箱支持,使得它在許多科學領(lǐng)域中成為計算機輔助設(shè)計和分析、算法研究和應(yīng)用開發(fā)的根本工具和首選平臺。MATLAB的圖形用戶界面〔Graphical

User

Interface,簡稱GUI,又稱圖形用戶接口〕是指采用圖形方式顯示的計算機操作用戶界面。與早期計算機使用的命令行界面相比,圖形界面對于用戶來說在視覺上更易于承受。MATLAB的圖形用戶界〔GUI〕是由光標,窗口,菜單、文字說明等對象構(gòu)成一個用戶界面。用戶可以通過鍵盤輸入相關(guān)的參數(shù),通過鼠標選擇、激活這些對象,使計算機完成相關(guān)的計算或者繪制波形等功能。MATLAB的GUI為開發(fā)者提供了一個不脫離MATLAB的開發(fā)環(huán)境,有助于MATLAB程序的GUI集成。這樣可以使開發(fā)者不必理會一大堆煩雜的代碼,簡化程序,但是同樣可以實現(xiàn)向決策者提供圖文并茂的界面,甚至到達多媒體的效果??梢哉fMATLAB提供了一個簡便的開發(fā)環(huán)境,可以讓開發(fā)者快速上手,提高了開發(fā)者的工作效率。MATLAB的圖形界面設(shè)計是通過對各種圖形對象的操作來實現(xiàn)的,因此用戶在使用的過程需要深入了解各種圖形對象的特征、屬性和操作。由此可見,圖形用戶界面的設(shè)計、制作是一件比較繁瑣的工作。圖形用戶界面的創(chuàng)立一般有兩種常用的方式:第一是通過使用m文件直接動態(tài)添加控件;第二是使用GUIDE快速生成GUI界面。這兩種實現(xiàn)的方法都需要使用M語言編程,但是技術(shù)的側(cè)重點不同。所謂的GUIDE就是圖形用戶界面開發(fā)環(huán)境(Graphical

User

Interface

Development

Environment),它向用戶提供了一系列的創(chuàng)立用戶圖形界面的工具。這些工具大大簡化了GUI設(shè)計和生成的過程。GUIDE可以完成的任務(wù)有如下兩點:第一是輸出GUI,第二是GUI編程。GUIDE實際上是一套MATLAB工具集。翻開GUIDE,新建并且保存后,會生成相應(yīng)的fig文件和m文件,fig文件儲存有圖形用戶界面的外形、菜單構(gòu)架等信息;m文件則儲存設(shè)計的程序局部,如主程序、回調(diào)函數(shù)〔Callback〕等。在Layout編輯視圖,可以使用如下工具:布局編輯器〔Layout

Editor〕,對齊工具〔Alignment

Tool〕,對象屬性觀察器〔Property

Inspector〕,對象瀏覽器〔Object

Browser〕,菜單編輯器Menu

Editor〕。新建一個布局,可以在新窗口中添加各種控件:靜態(tài)文本〔Static

Te*t〕,編輯〔Edit

Te*t〕,列表框〔List

bo*〕,滾動條〔Slider〕,按鈕(Push

button),開關(guān)按鈕〔Toggle

Button〕,單項選擇按鈕〔Radio

button〕,按鈕組〔Button

Group〕,檢查框〔Check

Bo*〕,彈出式菜單〔Popup

Menu〕,坐標軸〔A*es〕,面板〔Panel〕。每個控件的屬性中都含有多個參數(shù),對應(yīng)各個參數(shù),可以對控件的外觀,位置等各方面屬性進展修改。其實GUIDE創(chuàng)立圖形用戶界面的根底也是圖形句柄對象,只不過是具有很好的封裝,使用起來簡便,而且還能夠做到可視化的開發(fā),對于一般的用戶使用GUIDE創(chuàng)立圖形用戶界面應(yīng)用程序已經(jīng)足夠了。本文利用GUIDE創(chuàng)立圖形用戶界面進展計算器設(shè)計,設(shè)計GUI界面時,應(yīng)使總體界面簡單大方、控件布局合理,最終到達總體界面友好的效果。本次利用GUIDE創(chuàng)立圖形用戶界面進展計算器設(shè)計。設(shè)計計算器時,主要是考慮到計算器的易用性、功能的常用程度進展計算器界面與功能的設(shè)計。通過調(diào)整控件和文本的布局及顏色,使界面簡單大方、布局合理,到達界面友好的效果。計算器設(shè)計時主要利用到和set兩個函數(shù)進展各個控件屬性值的傳遞和設(shè)置,利用函數(shù)實現(xiàn)把兩個字符串連接起來。利用函數(shù)來計算字符串的長度實現(xiàn)后退的功能。利用函數(shù)將文本框中的字符串轉(zhuǎn)換成數(shù)值表達式,利用計算出結(jié)果返a*es和ezplot函數(shù)進展求階乘運算。利用str2num及num2str實現(xiàn)數(shù)值與字符之間的轉(zhuǎn)換。--...>一、設(shè)計目的:此題目通過MATLAB的gui程序設(shè)計較為簡單,在gui設(shè)計中主要用到三種控件,文本編輯框〔editte*t〕,靜態(tài)文本框〔Staticte*t〕,命令按鈕〔button〕。然后在通過各個按鈕的回調(diào)函數(shù),實現(xiàn)簡單的計算功能。二、設(shè)計方案:利用MATLABGUI設(shè)計實現(xiàn)一個圖形用戶界面的計算器程序,要求實現(xiàn):A.實現(xiàn)十進制數(shù)的加、減、乘、除、簡單計算。B.科學計算函數(shù),包括正弦、余弦、正切、余切、開方、指數(shù)等函數(shù)運行。C.能夠保存上次歷史計算的答案,先是答案存儲器中得內(nèi)容。D.有去除鍵,能去除操作。三、方案實施:通過MATLAB的gui程序設(shè)計較為簡單,在gui設(shè)計中主要用到兩種控件,顯示框用到文本編輯框〔editte*t〕,說明框用到靜態(tài)文本框〔Staticte*t〕,數(shù)字以及運算等按鈕用到命令按鈕〔pushbutton〕。然后在通過各個按鈕的回調(diào)函數(shù),實現(xiàn)簡單的計算功能。計算器程序由MATLAB代碼〔.m文件〕和GUI圖形〔.fig〕兩個局部組成。程序的使用方式是直接利用圖形界面中的按鍵鍵入所需數(shù)值、運算符等,再按等于號即可得出結(jié)果。首先用MATLABGUI功能,在繪制一個靜態(tài)文本框和一個文本編輯框,以及24個命令按鈕,調(diào)整好各控件大小、顏色,整體布局如下列圖:圖-1布局GUI1〕.翻開Matlab,輸入Guide回車或者在工具欄上點擊圖標出現(xiàn)Guide窗口:圖–22〕.然后雙擊"BlankGUI(Default)〞出現(xiàn)GUI窗口圖-33〕.添加按鈕圖-44〕.根據(jù)按鈕的作用及視覺效果做一定的修改把按鈕的字符串大小、顏色進展設(shè)置,對按鈕的位置進展排布,盡量使按鈕集中在靜態(tài)文本框下面。最終設(shè)置的靜態(tài)文本框為白色,其他按鈕均為分紅色。5〕.保存、添加功能函數(shù)把做好的按鈕及靜態(tài)文本框保存后自動彈出Editor的M文本,對然后對相應(yīng)的pushbutton添加功能函數(shù)。以下是相應(yīng)按鈕的功能函數(shù)?!?〕數(shù)字按鍵編寫。在functionpushbutton1_Callback(hObject,eventdata,handles〕下輸入:te*tString=get(handles.te*t1,'String');te*tString=strcat(te*tString,'0');set(handles.te*t1,'String',te*tString)這是使用句柄handles指向?qū)ο髏e*t1,并以字符串形式來存儲數(shù)據(jù)文本框te*t1的內(nèi)容,并存儲數(shù)個"0〞,然后由set(handles.te*t1,'String','te*tString'在te*t1中輸出。同理,分別在functionpushbutton2~10_Callback(hObject,eventdata,handles〕下給1~9數(shù)字按鍵下編寫此類程序?!?〕.符號鍵:functionpushbutton12_Callback(hObject,eventdata,handles)te*tString=get(handles.te*t1,'String');te*tString=strcat(te*tString,'+');set(handles.te*t1,'String',te*tString)strcat的作用是將兩個字符串連接起來,就是在已輸入的存儲數(shù)據(jù)te*tString后添加"+〞進展運算。然后執(zhí)行set(handles.te*t1,'String',te*tString)。符號鍵‘-’、‘*’、‘/’與‘+’的運算函數(shù)類似。"平方運算〞,主要是由"^2〞功能實現(xiàn)?!?〕運算符"=〞的編程:te*tString=get(handles.te*t1,'String');ans=eval(te*tString);"eval〞的作用是將符號表達式轉(zhuǎn)換成數(shù)值表達式。再由set(handles.te*t1,'String',ans)輸出?!?〕按鍵"back〞編程:即顯示一個空字符:set(handles.te*t1,'String','');按鍵"back〞編程:te*tString=get(handles.te*t1,'String');set(handles.te*t1,'String','');ss=char(te*tString);n=length(te*tString);te*tString=ss(1:w-1);%將w個字符串轉(zhuǎn)成w-1個,即刪除了末位字符set(handles.te*t1,'String',te*tString)〔5〕按鍵"清空〞:把靜態(tài)文本框的字符清空,返回一個空格set(handles.te*t1,'String','')〔6〕三角函數(shù)的編輯functioncos_Callback(hObject,eventdata,handles)te*tString=handles.te*t1;te*tString=cos(str2num(get(handles.te*t1,'String'))*pi/180);set(handles.te*t1,'String',num2str(te*tString))(get(handles.te*t1,'String'))*pi/180是把角度轉(zhuǎn)換為弧度,這樣在編程環(huán)境中才能識別,cos才能起作用。然后執(zhí)行set函數(shù),把結(jié)果輸出來。同理在sin,tan的回調(diào)函數(shù)中夜輸入相應(yīng)的函數(shù),只需把te*tString=cos(str2num(get(handles.te*t1,'String'))*pi/180);中的cos改為sin,tan即可〔7〕按鍵"退出〞:關(guān)閉計算器close(gcf);2、計算器的使用加法運算〔+〕:圖-5按"=〞后顯示圖-6平方運算:圖-7按"=〞后顯示圖-8通過本次實驗實現(xiàn)十進制數(shù)的加、減、乘、除、簡單計算對Matlab的操作有了進一步的認識和了解,通過屢次的修改調(diào)查做出實驗,驗證了實驗的正確性,大大的提高了我們對Matlab功能的認識,培養(yǎng)了我們的興趣。附各按鍵的程序源代碼:functionpushbutton1_Callback(hObject,eventdata,handles)te*tString=get(handles.te*t1,'String');te*tString=strcat(te*tString,'0');set(handles.te*t1,'String',te*tString)functionpushbutton2_Callback(hObject,eventdata,handles)te*tString=get(handles.te*t1,'String');te*tString=strcat(te*tString,'1');set(handles.te*t1,'String',te*tString)functionpushbutton3_Callback(hObject,eventdata,handles)te*tString=get(handles.te*t1,'String');te*tString=strcat(te*tString,'2');set(handles.te*t1,'String',te*tString)functionpushbutton4_Callback(hObject,eventdata,handles)te*tString=get(handles.te*t1,'String');te*tString=strcat(te*tString,'3');set(handles.te*t1,'String',te*tString)functionpushbutton5_Callback(hObject,eventdata,handles)te*tString=get(handles.te*t1,'String');te*tString=strcat(te*tString,'4');set(handles.te*t1,'String',te*tString)functionpushbutton6_Callback(hObject,eventdata,handles)te*tString=get(handles.te*t1,'String');te*tString=strcat(te*tString,'5');set(handles.te*t1,'String',te*tString)functionpushbutton7_Callback(hObject,eventdata,handles)te*tString=get(handles.te*t1,'String');te*tString=strcat(te*tString,'6');set(handles.te*t1,'String',te*tString)functionpushbutton8_Callback(hObject,eventdata,handles)te*tString=get(handles.te*t1,'String');te*tString=strcat(te*tString,'7');set(handles.te*t1,'String',te*tString)functionpushbutton9_Callback(hObject,eventdata,handles)te*tString=get(handles.te*t1,'String');te*tString=strcat(te*tString,'8');set(handles.te*t1,'String',te*tString)functionpushbutton10_Callback(hObject,eventdata,handles)te*tString=get(handles.te*t1,'String');te*tString=strcat(te*tString,'9');set(handles.te*t1,'String',te*tString)functionpushbutton11_Callback(hObject,eventdata,handles)te*tString=get(handles.te*t1,'String');te*tString=strcat(te*tString,'+');set(handles.te*t1,'String',te*tString)functionpushbutton12_Callback(hObject,eventdata,handles)te*tString=get(handles.te*t1,'String');te*tString=strcat(te*tString,'-');set(handles.te*t1,'String',te*tString)functionpushbutton13_Callback(hObject,eventdata,handles)te*tString=get(handles.te*t1,'String');te*tString=strcat(te*tString,'*');set(handles.te*t1,'String',te*tString)functionpushbutton14_Callback(hObject,eventdata,handles)te*tString=get(handles.te*t1,'String');te*tString=strcat(te*tString,'/');set(handles.te*t1,'String',te*tString)functionpushbutton15_Callback(hObject,eventdata,handles)te*tString=get(handles.te*t1,'String');te*tString=strcat(te*tString,'.');set(handles.te*t1,'String',te*tString)functionpushbutton16_Callback(hObject,eventdata,handles)te*tString=get(handles.te*t1,'String');ans=eval(te*tString);set(handles.te*t1,'String',ans)functionpushbutton17_Callback(hObject,eventdata,handles)te*tString=get(handles.te*t1,'String');te*tString=strcat(te*tString,'^2');set(handles.te*t1,'String',te*tString)functionpushbutton18_Call

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論