用MATLAB GUI设计简单计算器

上传人:lis****210 文档编号:171355427 上传时间:2022-11-26 格式:DOCX 页数:9 大小:108.67KB
收藏 版权申诉 举报 下载
用MATLAB GUI设计简单计算器_第1页
第1页 / 共9页
用MATLAB GUI设计简单计算器_第2页
第2页 / 共9页
用MATLAB GUI设计简单计算器_第3页
第3页 / 共9页
资源描述:

《用MATLAB GUI设计简单计算器》由会员分享,可在线阅读,更多相关《用MATLAB GUI设计简单计算器(9页珍藏版)》请在装配图网上搜索。

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

2、试,实现基于 MATLAB GUI的计算器的设计。.MATLAB GUI 介绍MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数 据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。MATLAB是matrix和laboratory两个词的组合,意为矩阵工厂,主要面 对科学计算、可视化以及交互式程设计的高科技计算环境。MATLAB是将数值分 析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功 能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效 数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱 了 传统非

3、交互式程序设计语言的编辑模式,特别是所附带的30多种面向不同领域 的工具箱支持,使得它在许多科学领域中成为计算机辅助设计和分析、算法研究 和应用开发的基本工具和首选平台。MATLAB 的图形用户界面(Graphical User Interface,简称 GUI,又称 图形用户接口)是指采用图形方式显示的计算机操作用户界面。与早期计算机使 用的命令行界面相比,图形界面对于用户来说在视觉上更易于接受。MATLAB的 图形用户界(GUI)是由光标,窗口,菜单、文字说明等对象构成一个用户界面。 用户可以通过键盘输入相关的参数,通过鼠标选择、激活这些对象,使计算机完 成相关的计算或者绘制波形等功能。M

4、ATLAB的GUI为开发者提供了一个不脱离 MATLAB的开发环境,有助于MATLAB程序的GUI集成。这样可以使开发者不必理 会一大堆烦杂的代码,简化程序,但是同样可以实现向决策者提供图文并茂的界 面,甚至达到多媒体的效果。可以说MATLAB提供了一个简便的开发环境,可以 让开发者快速上手,提高了开发者的工作效率。MATLAB的图形界面设计是通过对各种图形对象的操作来实现的,因此用户 在使用的过程需要深入了解各种图形对象的特征、属性和操作。由此可见,图形 用户界面的设计、制作是一件比较繁琐的工作。图形用户界面的创建一般有两种 常用的方式:第一是通过使用m文件直接动态添加控件;第二是使用GUI

5、DE快速 生成GUI界面。这两种实现的方法都需要使用M语言编程,但是技术的侧重点不 同。所谓的GUIDE就是图形用户界面开发环境(Graphical User Interface Development Environment),它向用户提供了 一系列的创建用户图形界面的工具。这些工具大大简化了 GUI设计和生成的过 程。GUIDE可以完成的任务有如下两点:第一是输出GUI,第二是GUI编程。GUIDE 实际上是一套MATLAB 工具集。打开GUIDE,新建并且保存后,会生成相应的fig 文件和m文件,fig文件储存有图形用户界面的外形、菜单构架等信息;m文件 则储存设计的程序部分,如主程序、

6、回调函数(Callback)等。在Layout编辑 视图,可以使用如下工具:布局编辑器(Layout Editor),对齐工具 (Alignment Tool),对象属性观察器(Proper ty Inspec tor),对象浏览器 (Object Browser),菜单编辑器Menu Editor)。新建一个布局,可以在新 窗口中添加各种控件:静态文本(Static Tex t),编辑(Edit Tex t),列表 框(List box),滚动条(Slider),按钮(Push butt on),开关按钮 (Toggle Butt on),单选按钮(Radio butto n),按钮组(Bu

7、 tt on Group), 检查框(Check Box),弹出式菜单(Popup Menu),坐标轴(Axes),面板 (Panel )。每个控件的属性中都含有多个参数,对应各个参数,可以对控件的外 观,位置等各方面属性进行修改。其实GUIDE创建图形用户界面的基础也是图形 句柄对象,只不过是具有很好的封装,使用起来简便,而且还能够做到可视化的 开发,对于一般的用户使用GUIDE创建图形用户界面应用程序已经足够了。本文 利用GUIDE创建图形用户界面进行计算器设计,设计GUI界面时,应使总体界面 简单大方、控件布局合理,最终达到总体界面友好的效果。本次利用GUIDE创建图形用户界面进行计算器

8、设计。设计计算器时,主要是 考虑到计算器的易用性、功能的常用程度进行计算器界面与功能的设计。通过调 整控件和文本的布局及颜色,使界面简单大方、布局合理,达到界面友好的效果。 计算器设计时主要利用到get和set两个函数进行各个控件属性值的传递和设 置,利用strcat函数实现把两个字符串连接起来。利用length函数来计算字符 串的长度实现后退的功能。利用eval函数将文本框中的字符串转换成数值表达 式,利用MTB计算出结果返回显示。利用坐标轴ixes和ezplot函数进行图形的绘制, 利用factorial函数进行求阶乘运算。利用str2num及num2str实现数值与字符 之间的转换。一、

9、设计目的:本题目通过MATLAB的gui程序设计较为简单,在gui设计中主要用到三种 控件,文本编辑框(edit text),静态文本框(Static text),命令按钮 (push button)。然后在通过各个按钮的回调函数,实现简单的计算功能。二、设计方案:利用MATLAB GUI设计实现一个图形用户界面的计算器程序,要求实现:A. 实现十进制数的加、减、乘、除、简单计算。B. 科学计算函数,包括正弦、余弦、正切、余切、开方、指数等函数运行。C. 能够保存上次历史计算的答案,先是答案存储器中得内容。D. 有清除键,能清除操作。三、方案实施:通过MATLAB的gui程序设计较为简单,在g

10、ui设计中主要用到两种控件, 显示框用到文本编辑框(edit text),说明框用到静态文本框(Static text), 数字以及运算等按钮用到命令按钮(push button)。然后在通过各个按钮的回调 函数,实现简单的计算功能。计算器程序由MATLAB代码(.m文件)和GUI图形(.fig )两个部分组成。 程序的使用方式是直接利用图形界面中的按键键入所需数值、运算符等,再按等 于号即可得出结果。首先用MATLAB GUI功能,在绘制一个静态文本框和一个文 本编辑框,以及24个命令按钮,调整好各控件大小、颜色,整体布局如图所示:ioncot图-1o1234567B-A/-sincos1、

11、布局GUI1).打开Matlab,输入Guide回车或者在工具栏上点击图标出现Guide窗口:图-22).然后双击“Blank GUI(Default)” 出现 GUI 窗口图-33).添加按钮图-44) .根据按钮的作用及视觉效果做一定的修改把按钮的字符串大小、颜色进行设置,对按钮的位置进行排布,尽量使按钮 集中在静态文本框下面。最终设置的静态文本框为白色,其他按钮均为分红色。5) .保存、添加功能函数把做好的按钮及静态文本框保存后自动弹出Editor的M文本,对然后对相应 的pushbutton添加功能函数。以下是相应按钮的功能函数。(1) 数字按键编写。在 function pushbu

12、ttonl_Callback(hObject, eventdata, handles)下输入: textString = get(handles.text1,String);textString =strcat(textString,0); set(handles.text1,String,textString) 这是使用句柄handles指向对象t ex tl,并以字符串形式来存储数据文本框t ex tl 的内容,并存储数个“0”,然后由 set (handles, tex t1,S tring, textSt ring在 tex t1 中输出。 同理,分别在 function pushbu

13、tton2l0_Callback(hObject, eventdata, handles)下给19数字按键下编写此类程序。(2) .符号键:function pushbuttonl2_Callback(hObject, eventdata, handles) textString = get(handles,textl,String);textString =strcat(textString,+); set(handles,textl,String,textString) strcat的作用是将两个字符串连接起来,就是在已输入的存储数据textString 后添加“+”进行运算。然后执行 s

14、et (handles, tex t1,S tring, textSt ring)。符号键 -、 *、 /与+的运算函数类似。“平方运算”,主要是由“2”功能实现。(3) 运算符“=”的编程:textString = get(handles,textl,String); ans =eval(textString);“eval ”的作用是将符号表达式转换成数值表达式。再由 set(handles.textl, String,ans)输出。(4) 按键“back”编程:即显示一个空字符: set(handles,textl,String,) ; 按键“ back ”编程:textString =

15、get(handles,textl,String);set(handles,textl,String,) ; ss=char(textString);n=length(textString); textString=ss(l:w-l); %将可个字符串转成w-1个,即删除了末位字符 set(handles,textl,String,textString)(5) 按键“清空”:把静态文本框的字符清空,返回一个空格 set(handles,text1,String,)(6) 三角函数的编辑function cos_Callback(hObject, eventdata, handles) text

16、String=handles,text1;textString=cos(str2num(get(handles,text1,String)*pi/180); set(handles,text1,String,num2str(textString)(ge t(handles. textl,S tring) *pi/180是把角度转换为弧度,这样在编程环 境中才能识别,cos才能起作用。然后执行set函数,把结果输出来。同理在sin, tan的回调函数中夜输入相应的函数,只需把textString二cos(str2num(get(handles .textl,String)*pi/180); 中的

17、cos改为sin, tan即可(7) 按键“退出”:关闭计算器close(gcf);2、计算器的使用加法运算(+):-4310*567!&按“=”后显示图-6平方运算:按“=”后显示通过本次实验实现十进制数的加、减、乘、除、简单计算对Mat lab的操作有了 进一步的认识和了解,通过多次的修改调查做出实验,验证了实验的正确性,大 大的提高了我们对Matlab功能的认识,培养了我们的兴趣。3、附各按键的程序源代码:function pushbuttonl_Callback(hObject, eventdata, handles) textString = get( handles .textl,

18、String);textSt ring 二st rca t(textSt ring,0);set( handles .textl,S tring ,textSt ring)function pushbutton2_Callback(h0bject, eventdata, handles) textString = get( handles .text1,String);textSt ring 二st rca t(textSt ring,1);set(handles.text1, String ,textString)function pushbutton3_Callback(h0bject,

19、eventdata, handles) textString = get( handles .text1,String);textSt ring 二st rca t(textSt ring,2);set(handles.text1, String ,textString)function pushbutton4_Callback(h0bject, eventdata, handles) textString = get( handles .text1,String);textSt ring 二st rca t(textSt ring,3);set(handles.text1, String ,

20、textString)function pushbutton5_Callback(h0bject, eventdata, handles) textString = get( handles .text1,String);textSt ring 二st rca t(textSt ring,4);set(handles.text1, String ,textString)function pushbutton6_Callback(h0bject, eventdata, handles) textString = get( handles .text1,String);textSt ring 二s

21、t rca t(textSt ring,5);set(handles.text1, String ,textString)handles)handles)handles)handles)handles)handles)handles)handles)handles)function pushbutton7_Callback(hObject, eventdata, textString = get(handles.text1,String); textString =strcat(textString,6);set(handles.text1,String,textString)function

22、 pushbutton8_Callback(hObject, eventdata, textString = get(handles.text1,String);textString =strcat(textString,7); set(handles.text1,String,textString)function pushbutton9_Callback(hObject, eventdata, textString = get(handles.text1,String);textString =strcat(textString,8); set(handles.text1,String,t

23、extString)function pushbutton10_Callback(hObject, eventdata, textString = get(handles.text1,String);textString =strcat(textString,9); set(handles.text1,String,textString)function pushbutton11_Callback(hObject, eventdata, textString = get(handles.text1,String); textString =strcat(textString,+);set(ha

24、ndles.text1,String,textString)function pushbutton12_Callback(hObject, eventdata, textString = get(handles.text1,String); textString =strcat(textString,-);set(handles.text1,String,textString)function pushbutton13_Callback(hObject, eventdata, textString = get(handles.text1,String); textString =strcat(

25、textString,*);set(handles.text1,String,textString)function pushbutton14_Callback(hObject, eventdata, textString = get(handles.text1,String); textString =strcat(textString,/);set(handles.text1,String,textString)function pushbutton15_Callback(hObject, eventdata, textString = get(handles.text1,String);

26、 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(ha

27、ndles.text1,String);textSt ring 二st rca t(textSt ring,2); set(handles.text1,String,textString)function pushbutton18_Callback(hObject, eventdata, handles) textString = get(handles.text1,String);set(handles.text1,String,) ;ss=char(textString); n=length(textString); textString=ss(1:w-1); set(handles.te

28、xt1,String,textString)function pushbutton19_Callback(hObject, eventdata, handles) set(handles.text1,String,)function pushbutton20_Callback(hObject, eventdata, handles) close(gcf);四、设计总结本次是利用MATLAB GUI来设计实现科学计算器的简单功能,实现过程较为简 单。首先打开MATLAB建立一个GUI工程,然后利用图形用户界面,设计出计算 器的大致外观,创建数字按钮、功能按钮、文本框及坐标轴等,再为每一个按钮 设

29、置想要实现的功能,然后就是将对应的函数写到自动生成的回调程序中,然后 每个按钮就可以实现对应的功能。本次设计的科学计算器具有实用性强、功能强大、易操作、移植性好、占用 资源少、执行效率高等优点。同时也存在不足的方面,可视化界面没有达到最佳 效果,功能不是很全面,操作逻辑不是很清晰,以后还需要进一步完善和改进。在本次计算器设计的过程中还是遇到很多的困难,首先就是程序的问题,编辑 出计算器的界面之后,自动生成的结构程序是一个看起来非常乱的程序,每个按 键对应什么功能看不出来,于是在原来的工程中找到每个按键所对应回调函数的 序号,这样找到按钮所对应的回调函数编写功能程序。编程的过程中,主要是对 变量和句柄的控制,对变量相应的赋值后,要返回给主程序,然后就可以在 Static Text中显示出来的。通过这次MATLAB GUI课程设计,使我对MATLAB 的操作与GUI界面设计有了更深一步的理解和认识,学习到了以前未曾了解的知 识,这次课程设计使我收获很多。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!