《用MATLAB GUI设计简单计算器》由会员分享,可在线阅读,更多相关《用MATLAB GUI设计简单计算器(9页珍藏版)》请在金锄头文库上搜索。
1、用 MATLAB GUI 设计简单计算器- 1 -摘要摘要基于 MATLAB GUI 的计算器设计是利用 GUIDE 创建图形用户界面进行计算器设 计。设计计算器时,主要是考虑到计算器的易用性、功能的常用程度进行计算 器界面与功能的设计。通过调整控件和文本的布局及颜色,使界面简单大方、 布局合理,达到界面友好的效果。计算器设计时主要利用到 get 和 set 两个函数进行各个控件属性值的传递和 设置。计算器实现的功能有:数字 09 和小数点的输入显示,平方、开平方和 对数的输入显示。进行四则运算、正弦计算、余弦计算、正切计算和余切计算, 可以求阶乘、求百分数和求倒数。可以进行括号及变量 x 与
2、变量 y 的输入,结 合坐标轴编辑框和曲线颜色编辑框实现函数的曲线绘制。最后运行调试,实现 基于 MATLAB GUI 的计算器的设计。 MATLABMATLAB GUIGUI 介绍介绍MATLAB 是美国 MathWorks 公司出品的商业数学软件,用于算法开发、数 据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。 MATLAB 是 matrix 和 laboratory 两个词的组合,意为矩阵工厂,主要面 对科学计算、可视化以及交互式程设计的高科技计算环境。MATLAB 是将数值分 析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大 功能集成在一个易于使用的
3、视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言的编辑模式,特别是所附带的 30 多种面向不同领域的工具箱支持,使得它在许多科学领域中成为计算机辅助设计和分析、 算法研究和应用开发的基本工具和首选平台。MATLAB 的图形用户界面(Graphical User Interface,简称 GUI,又称图 形用户接口)是指采用图形方式显示的计算机操作用户界面。与早期计算机使 用的命令行界面相比,图形界面对于用户来说在视觉上更易于接受。MATLAB 的 图形用户界(GUI)是由光标,窗口,菜单、文字说明等对象
4、构成一个用户界面。 用户可以通过键盘输入相关的参数,通过鼠标选择、激活这些对象,使计算机 完成相关的计算或者绘制波形等功能。MATLAB 的 GUI 为开发者提供了一个不脱 离 MATLAB 的开发环境,有助于 MATLAB 程序的 GUI 集成。这样可以使开发者不 必理会一大堆烦杂的代码,简化程序,但是同样可以实现向决策者提供图文并 茂的界面,甚至达到多媒体的效果。可以说 MATLAB 提供了一个简便的开发环境, 可以让开发者快速上手,提高了开发者的工作效率。 MATLAB 的图形界面设计是通过对各种图形对象的操作来实现的,因此用 户在使用的过程需要深入了解各种图形对象的特征、属性和操作。由
5、此可见, 图形用户界面的设计、制作是一件比较繁琐的工作。图形用户界面的创建一般 有两种常用的方式:第一是通过使用 m 文件直接动态添加控件;第二是使用 GUIDE 快速生成 GUI 界面。这两种实现的方法都需要使用 M 语言编程,但是技 术的侧重点不同。所谓的 GUIDE 就是图形用户界面开发环境 (Graphical User Interface Development Environment),它向用户提供了一 系列的创建用户图形界面的工具。这些工具大大简化了 GUI 设计和生成的过程。用 MATLAB GUI 设计简单计算器- 2 -GUIDE 可以完成的任务有如下两点:第一是输出 GU
6、I,第二是 GUI 编程。GUIDE 实际上是一套 MATLAB 工具集。打开 GUIDE,新建并且保存后,会生成相应的 fig 文件和 m 文件,fig 文件储存有图形用户界面的外形、菜单构架等信息;m 文件则储存设计的程序部分,如主程序、回调函数(Callback)等。在 Layout 编辑视图,可以使用如下工具:布局编辑器(Layout Editor),对齐工具 (Alignment Tool),对象属性观察器(Property Inspector),对象浏览器 (Object Browser),菜单编辑器 Menu Editor)。新建一个布局,可以在新 窗口中添加各种控件:静态文本(
7、Static Text),编辑(Edit Text),列表 框(List box),滚动条(Slider),按钮(Push button),开关按钮 (Toggle Button),单选按钮(Radio button),按钮组(Button Group), 检查框(Check Box),弹出式菜单(Popup Menu),坐标轴(Axes),面板 (Panel)。每个控件的属性中都含有多个参数,对应各个参数,可以对控件的 外观,位置等各方面属性进行修改。其实 GUIDE 创建图形用户界面的基础也是 图形句柄对象,只不过是具有很好的封装,使用起来简便,而且还能够做到可 视化的开发,对于一般的用户
8、使用 GUIDE 创建图形用户界面应用程序已经足够 了。本文利用 GUIDE 创建图形用户界面进行计算器设计,设计 GUI 界面时,应 使总体界面简单大方、控件布局合理,最终达到总体界面友好的效果。 本次利用 GUIDE 创建图形用户界面进行计算器设计。设计计算器时,主要 是考虑到计算器的易用性、功能的常用程度进行计算器界面与功能的设计。通 过调整控件和文本的布局及颜色,使界面简单大方、布局合理,达到界面友好 的效果。计算器设计时主要利用到 get和 set 两个函数进行各个控件属性值的 传递和设置,利用 strcat 函数实现把两个字符串连接起来。利用 length 函数 来计算字符串的长度
9、实现后退的功能。利用 eval 函数将文本框中的字符串转 换成数值表达式,利用 M A T L A B计算出结果返回显示。利用坐标轴 axes 和 ezplot 函 数进行图形的绘制,利用 factorial 函数进行求阶乘运算。利用 str2num 及 num2str 实现数值与字符之间的转换。用 MATLAB GUI 设计简单计算器- 3 -一、设计目的一、设计目的: :本题目通过 MATLAB 的 gui 程序设计较为简单,在 gui 设计中主要用到三 种控件,文本编辑框(edit text) ,静态文本框(Static text) ,命令按钮 (push button) 。然后在通过各
10、个按钮的回调函数,实现简单的计算功能。 二、设计方案:二、设计方案:利用 MATLAB GUI 设计实现一个图形用户界面的计算器程序,要求实现: A.实现十进制数的加、减、乘、除、简单计算。 B. 科学计算函数,包括正弦、余弦、正切、余切、开方、指数等函数运行。C. 能够保存上次历史计算的答案,先是答案存储器中得内容。 D. 有清除键,能清除操作。 三、方案实施:三、方案实施:通过 MATLAB 的 gui 程序设计较为简单,在 gui 设计中主要用到两种控件, 显示框用到文本编辑框(edit text) ,说明框用到静态文本框(Static text) , 数字以及运算等按钮用到命令按钮(p
11、ush button) 。然后在通过各个按钮的回 调函数,实现简单的计算功能。 计算器程序由 MATLAB 代码(.m 文件)和 GUI 图形(.fig)两个部分组成。 程序的使用方式是直接利用图形界面中的按键键入所需数值、运算符等,再按 等于号即可得出结果。首先用 MATLAB GUI 功能,在绘制一个静态文本框和一个 文本编辑框,以及 24 个命令按钮,调整好各控件大小、颜色,整体布局如图所 示:图-1 用 MATLAB GUI 设计简单计算器- 4 -1 1、布局布局 GUIGUI1).打开 Matlab,输入 Guide 回车或者在工具栏上点击图标出现 Guide 窗口:图22).然后
12、双击“Blank GUI(Default)”出现 GUI 窗口图-3 3).添加按钮图-4 4).根据按钮的作用及视觉效果做一定的修改 把按钮的字符串大小、颜色进行设置,对按钮的位置进行排布,尽量使按钮 集中在静态文本框下面。最终设置的静态文本框为白色,其他按钮均为分红色。5).保存、添加功能函数把做好的按钮及静态文本框保存后自动弹出 Editor 的 M 文本,对然后对相应 的 pushbutton 添加功能函数。以下是相应按钮的功能函数。用 MATLAB GUI 设计简单计算器- 5 -(1)数字按键编写。 在 function pushbutton1_Callback(hObject,
13、eventdata, handles)下输入:textString = get(handles.text1,String); textString =strcat(textString,0); set(handles.text1,String,textString) 这是使用句柄 handles 指向对象 text1,并以字符串形式来存储数据文本框 text1 的内容,并存储数个“0”, 然后由 set(handles.text1,String,textString在 text1 中输出。 同理,分别在 function pushbutton210_Callback(hObject, even
14、tdata, handles)下给 19 数字按键下编写此类程序。 (2).符号键: function pushbutton12_Callback(hObject, eventdata, handles) textString = get(handles.text1,String); textString =strcat(textString,+); set(handles.text1,String,textString) strcat 的作用是将两个字符串连接起来,就是在已输入的存储数据 textString 后添加“+”进行运算。 然后执行 set(handles.text1,String
15、,textString)。符号键-、*、 /与+的运算函数类似。 “平方运算”,主要是由“2”功能实现。 (3)运算符“=”的编程: textString = get(handles.text1,String); ans =eval(textString); “eval”的作用是将符号表达式转换成数值表达式。 再由 set(handles.text1,String,ans)输出。 (4)按键“back”编程:即显示一个空字符: set(handles.text1,String,) ; 按键“back”编程: textString = get(handles.text1,String);set(
16、handles.text1,String,) ;ss=char(textString); n=length(textString); textString=ss(1:w-1); %将 w 个字符串转成 w-1 个,即删除了末位字符 set(handles.text1,String,textString) (5)按键“清空”:把静态文本框的字符清空,返回一个空格 set(handles.text1,String,) (6)三角函数的编辑 function cos_Callback(hObject, eventdata, handles) textString=handles.text1; textString=cos(str2num(get(handles.text1,String)*pi/180); set(handles.text1,String,num2str(textString)用 MATLAB GUI 设计简单计算器- 6 -(get(handles.t