用MATLABGUI设计简单计算器_第1页
用MATLABGUI设计简单计算器_第2页
用MATLABGUI设计简单计算器_第3页
用MATLABGUI设计简单计算器_第4页
用MATLABGUI设计简单计算器_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

--..--考试资料..>摘要基于MATLAB

GUI的计算器设计是利用GUIDE创立图形用户界面进展计算器设计。设计计算器时,主要是考虑到计算器的易用性、功能的常用程度进展计算器界面与功能的设计。通过调整控件和文本的布局及颜色,使界面简单大方、布局合理,到达界面友好的效果。计算器设计时主要利用到get和set两个函数进展各个控件属性值的传递和设置。计算器实现的功能有:数字0~9和小数点的输入显示,平方、开平方和对数的输入显示。进展四则运算、正弦计算、余弦计算、正切计算和余切计算,可以求阶乘、求百分数和求倒数。可以进展括号及变量*与变量y的输入,结合坐标轴编辑框和曲线颜色编辑框实现函数的曲线绘制。最后运行调试,实现基于MATLAB

GUI的计算器的设计。MATLABGUI介绍MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。MATLAB是matri*和laboratory两个词的组合,意为矩阵工厂,主要面对科学计算、可视化以及交互式程设计的高科技计算环境。MATLAB是将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进展有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言的编辑模式,特别是所附带的30多种面向不同领域的工具箱支持,使得它在许多科学领域中成为计算机辅助设计和分析、算法研究和应用开发的根本工具和首选平台。MATLAB的图形用户界面〔Graphical

User

Interface,简称GUI,又称图形用户接口〕是指采用图形方式显示的计算机操作用户界面。与早期计算机使用的命令行界面相比,图形界面对于用户来说在视觉上更易于承受。MATLAB的图形用户界〔GUI〕是由光标,窗口,菜单、文字说明等对象构成一个用户界面。用户可以通过键盘输入相关的参数,通过鼠标选择、激活这些对象,使计算机完成相关的计算或者绘制波形等功能。MATLAB的GUI为开发者提供了一个不脱离MATLAB的开发环境,有助于MATLAB程序的GUI集成。这样可以使开发者不必理会一大堆烦杂的代码,简化程序,但是同样可以实现向决策者提供图文并茂的界面,甚至到达多媒体的效果。可以说MATLAB提供了一个简便的开发环境,可以让开发者快速上手,提高了开发者的工作效率。MATLAB的图形界面设计是通过对各种图形对象的操作来实现的,因此用户在使用的过程需要深入了解各种图形对象的特征、属性和操作。由此可见,图形用户界面的设计、制作是一件比较繁琐的工作。图形用户界面的创立一般有两种常用的方式:第一是通过使用m文件直接动态添加控件;第二是使用GUIDE快速生成GUI界面。这两种实现的方法都需要使用M语言编程,但是技术的侧重点不同。所谓的GUIDE就是图形用户界面开发环境(Graphical

User

Interface

Development

Environment),它向用户提供了一系列的创立用户图形界面的工具。这些工具大大简化了GUI设计和生成的过程。GUIDE可以完成的任务有如下两点:第一是输出GUI,第二是GUI编程。GUIDE实际上是一套MATLAB工具集。翻开GUIDE,新建并且保存后,会生成相应的fig文件和m文件,fig文件储存有图形用户界面的外形、菜单构架等信息;m文件则储存设计的程序局部,如主程序、回调函数〔Callback〕等。在Layout编辑视图,可以使用如下工具:布局编辑器〔Layout

Editor〕,对齐工具〔Alignment

Tool〕,对象属性观察器〔Property

Inspector〕,对象浏览器〔Object

Browser〕,菜单编辑器Menu

Editor〕。新建一个布局,可以在新窗口中添加各种控件:静态文本〔Static

Te*t〕,编辑〔Edit

Te*t〕,列表框〔List

bo*〕,滚动条〔Slider〕,按钮(Push

button),开关按钮〔Toggle

Button〕,单项选择按钮〔Radio

button〕,按钮组〔Button

Group〕,检查框〔Check

Bo*〕,弹出式菜单〔Popup

Menu〕,坐标轴〔A*es〕,面板〔Panel〕。每个控件的属性中都含有多个参数,对应各个参数,可以对控件的外观,位置等各方面属性进展修改。其实GUIDE创立图形用户界面的根底也是图形句柄对象,只不过是具有很好的封装,使用起来简便,而且还能够做到可视化的开发,对于一般的用户使用GUIDE创立图形用户界面应用程序已经足够了。本文利用GUIDE创立图形用户界面进展计算器设计,设计GUI界面时,应使总体界面简单大方、控件布局合理,最终到达总体界面友好的效果。本次利用GUIDE创立图形用户界面进展计算器设计。设计计算器时,主要是考虑到计算器的易用性、功能的常用程度进展计算器界面与功能的设计。通过调整控件和文本的布局及颜色,使界面简单大方、布局合理,到达界面友好的效果。计算器设计时主要利用到和set两个函数进展各个控件属性值的传递和设置,利用函数实现把两个字符串连接起来。利用函数来计算字符串的长度实现后退的功能。利用函数将文本框中的字符串转换成数值表达式,利用计算出结果返a*es和ezplot函数进展求阶乘运算。利用str2num及num2str实现数值与字符之间的转换。--...>一、设计目的:此题目通过MATLAB的gui程序设计较为简单,在gui设计中主要用到三种控件,文本编辑框〔editte*t〕,静态文本框〔Staticte*t〕,命令按钮〔button〕。然后在通过各个按钮的回调函数,实现简单的计算功能。二、设计方案:利用MATLABGUI设计实现一个图形用户界面的计算器程序,要求实现:A.实现十进制数的加、减、乘、除、简单计算。B.科学计算函数,包括正弦、余弦、正切、余切、开方、指数等函数运行。C.能够保存上次历史计算的答案,先是答案存储器中得内容。D.有去除键,能去除操作。三、方案实施:通过MATLAB的gui程序设计较为简单,在gui设计中主要用到两种控件,显示框用到文本编辑框〔editte*t〕,说明框用到静态文本框〔Staticte*t〕,数字以及运算等按钮用到命令按钮〔pushbutton〕。然后在通过各个按钮的回调函数,实现简单的计算功能。计算器程序由MATLAB代码〔.m文件〕和GUI图形〔.fig〕两个局部组成。程序的使用方式是直接利用图形界面中的按键键入所需数值、运算符等,再按等于号即可得出结果。首先用MATLABGUI功能,在绘制一个静态文本框和一个文本编辑框,以及24个命令按钮,调整好各控件大小、颜色,整体布局如下列图:图-1布局GUI1〕.翻开Matlab,输入Guide回车或者在工具栏上点击图标出现Guide窗口:图–22〕.然后双击"BlankGUI(Default)〞出现GUI窗口图-33〕.添加按钮图-44〕.根据按钮的作用及视觉效果做一定的修改把按钮的字符串大小、颜色进展设置,对按钮的位置进展排布,尽量使按钮集中在静态文本框下面。最终设置的静态文本框为白色,其他按钮均为分红色。5〕.保存、添加功能函数把做好的按钮及静态文本框保存后自动弹出Editor的M文本,对然后对相应的pushbutton添加功能函数。以下是相应按钮的功能函数。〔1〕数字按键编写。在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指向对象te*t1,并以字符串形式来存储数据文本框te*t1的内容,并存储数个"0〞,然后由set(handles.te*t1,'String','te*tString'在te*t1中输出。同理,分别在functionpushbutton2~10_Callback(hObject,eventdata,handles〕下给1~9数字按键下编写此类程序。〔2〕.符号键: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的作用是将两个字符串连接起来,就是在已输入的存储数据te*tString后添加"+〞进展运算。然后执行set(handles.te*t1,'String',te*tString)。符号键‘-’、‘*’、‘/’与‘+’的运算函数类似。"平方运算〞,主要是由"^2〞功能实现。〔3〕运算符"=〞的编程:te*tString=get(handles.te*t1,'String');ans=eval(te*tString);"eval〞的作用是将符号表达式转换成数值表达式。再由set(handles.te*t1,'String',ans)输出。〔4〕按键"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个字符串转成w-1个,即删除了末位字符set(handles.te*t1,'String',te*tString)〔5〕按键"清空〞:把静态文本框的字符清空,返回一个空格set(handles.te*t1,'String','')〔6〕三角函数的编辑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是把角度转换为弧度,这样在编程环境中才能识别,cos才能起作用。然后执行set函数,把结果输出来。同理在sin,tan的回调函数中夜输入相应的函数,只需把te*tString=cos(str2num(get(handles.te*t1,'String'))*pi/180);中的cos改为sin,tan即可〔7〕按键"退出〞:关闭计算器close(gcf);2、计算器的使用加法运算〔+〕:图-5按"=〞后显示图-6平方运算:图-7按"=〞后显示图-8通过本次实验实现十进制数的加、减、乘、除、简单计算对Matlab的操作有了进一步的认识和了解,通过屡次的修改调查做出实验,验证了实验的正确性,大大的提高了我们对Matlab功能的认识,培养了我们的兴趣。附各按键的程序源代码: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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论