基于Matlab的简易计算器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
工程设计报告
设计题目:基于Matlab的简易计算器
学院:
专业:
班级:
学号:
姓名:
电子:
日期:2015年12 月
成绩:
指导教师:
. 西 安 电 子 科 技 大 学 电 子 工 程 学 院 工 程 设 计 任 务 书 学生 指导教师 职称 学生学号 专业 题目 基于Matlab 的简易计算器 任务与要求 任务如下: 利用MATLAB GUI 设计实现一个图形用户界面的计算器程序,实现: A.实现十进制数的加、减、乘、除、简单计算。
B. 科学计算函数,包括正弦、余弦、正切、余切、开方、指数等函数运行。
C. 有清除键,能清除操作。
要求如下: A .熟练掌握Matlab GUI 界面的设计与应用 B .最终计算器能够实现预期的相关功能
开始日期 2015年 11月 日 完成日期 2016年1月 日
课程设计所在单位
本表格由电子工程学院网络信息中心 编辑录入 . …………………………装………………………………订………………………………线………………………………………………………………
摘要
基于Matlab GUI计算器设计时利用GUI的创建图像用户界面进行计算器设计。
设计计算器时,主要是考虑到计算器的易用性、功能的常用程度进行计算器界面与功能的设计。
通过调整控件和文本的布局及颜色,使界面简单大方、布局合理,达到界面友好的效果。
计算器设计时主要利用到get和set两个函数进行各个控件属性值的传递和设置。
计算器实现的功能有:数字0~9和小数点的输入显示,平方开方和对数的输入显示。
进行四则运算、正弦函数、余弦函数、正切函数以及反正弦函数、反余弦函数、反正切函数的计算等等。
最后运行调试,实现基于Matlab GUI的计算器的设计。
关键词:Matlab GUI 计算器
Abstracts
Based on Matlab GUI calculator design using the user interface to create images of GUI calculator design.Design calculator, mainly considering the ease of use, function calculators calculator interface and function of the common level of design.By adjusting the control and the layout of the text and color, make the interface simple and easy, rational layout, to achieve the effect of friendly interface.
Calculator design used to get and set two main function for each attribute value transfer and control Settings.Calculator the functions are: 0 ~ 9, according to input and decimal square root and logarithm of input.Arithmetic, sine function and cosine function, tangent function and the arcsine function,arccosine function,
the calculation of the arctangent function and so on.Finally running debugging, implementation design based on Matlab GUI calculator.
Keywords: Matlab GUI calculator
目录
摘要 (4)
Abstracts (4)
目录 (6)
第一章绪论 (8)
1.MATLAB简介: (8)
2.本文安排: (8)
第二章GUI设计界面 (10)
2.1打开GUI (11)
2.2.添加按钮 (11)
2.3.根据按钮的作用及视觉效果做一定的修改 (11)
2.4.保存、添加功能函数 (12)
2.4.1 数字键编写 (12)
2.4.2 符号键的编写 (13)
2.4.3 运算符“=”的编写 (13)
2.4.4 按键“←back”的编写 (13)
2.4.5 按键“清空”的编写 (14)
2.4.6 按键“退出”的编写 (14)
第三章计算器的使用和抽样检验 (15)
3.1 除法运算(÷) (15)
3.2 平方运算(^2) (15)
3.3 函数cos (∏/3)的计算 (17)
3.4 函数arcsin(∏/3)的计算 (17)
3.5 以2为底的对数(log 2)的计算 (18)
3.6 总结: (18)
第四章特殊函数的源代码及总结 (19)
函数代码及思路: (19)
总结:问题及其优化 (21)
第五章心得体会 (22)
参考文献 (23)
第一章绪论
1.MATLAB简介:
MATLAB是matrix和laboratory两个词的组合,意为矩阵工厂(矩阵实验室)。
研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解
2.本文安排:
本文第一章是绪论部分,主要是关于Matlab的一个介绍,以及对本文的一个大体上的容上的安排。
本文第二章侧重介绍了如何运用Matlab中GUI界面功能设计一个合理的、实用的简易计算器,并且介绍了如何在设计好的计算器中添加功能函数,实现预期的相关功能。
本文第三章粗略的介绍的计算器的基本使用方法以及相关的一些计算器功能实现效果的检验,并对检验结果作简单的分析介绍。
本文第四章主要对部分特殊函数的源代码作简单的分析与介绍,以及总结程序在设计过程中发现的问题及其相应的优化方案。
本文第五章是对本次作业的心得体会。
本文最后是相关的参考文献
第二章GUI设计界面计算器的效果图:
图1
图2
2.1打开GUI
输入Guide 回车或者在工具栏上点击图标打开Guide 窗口:
图3
2.2.添加按钮
图4
2.3.根据按钮的作用及视觉效果做一定的修改
双击按钮(Puch Button)进入按键属性修改显示字符串大小、字体和颜色,
然后对按钮的位置进行排布,尽量使按钮集中在静态文本框下面。
图5
2.4.保存、添加功能函数
把做好的按钮及静态文本框保存后自动弹出Editor的M文本,对然后对相应的pushbutton添加功能函数。
以下是相应按钮的功能函数。
2.4.1 数字键编写
在function pushbutton1_Callback(hObject, 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 pushbutton2~10_Callback(hObject, eventdata, handles)下给1~9数字按键下编写此类程序。
2.4.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',textString)。
符号键‘-’、‘*’、‘/’与‘÷’的运算函数类似。
“平方运算”,主要是由“^2”功能实现。
2.4.3 运算符“=”的编写
textString = get(handles.text1,'String');
ans =eval(textString);
“eval”的作用是将符号表达式转换成数值表达式。
再由set(handles.text1,'String',ans)输出。
2.4.4 按键“←back”的编写
textString=get(handles.text1, 'String')
w=length(textString)
t=char(textString)
textString=t(1:w-1) %将w个字符串转成w-1个,即删除了末位字符
set(handles.text1,'String',textString)
2.4.5 按键“清空”的编写set(handles.text1,'String','')
2.4.6 按键“退出”的编写close(gcf);
第三章计算器的使用和抽样检验3.1 除法运算(÷)
图6图7由结果可知,除法运算功能正确实现。
3.2 平方运算(^2)
图8图9
由结果可知,乘方运算功能正确实现。
3.3 函数cos (∏/3)的计算
图10 图11由结果可知,cos()运算功能正确实现。
3.4 函数arcsin(∏/3)的计算
图12 图13由结果可知,arcsin()运算功能正确实现。
3.5 以2为底的对数(log 2)的计算
调试的时候发现一个问题,发现以2为底的对数(log 2)计算需要先输入数字,然后点击log2按钮键直接可以计算出正确的结果,但是不能按照普通计算器那样先安log2按钮键然后输入要计算的数字,再安=键显示结果,说明书写的程序还有一些bug,但是我调试后仍然没有能够发现问题所在,所以该功能还需谨慎使用。
3.6 总结:
在对计算器其他功能键进行的检验结果显示,该计算器除了log2的计算功能存在bug外,其他功能计算的结果均与实际结果相吻合,计算器的功能实现的基本完好且能实现较大数值的运算,计算结果用科学技术法表示。
第四章特殊函数的源代码及总结
函数代码及思路:
4.1 按键“√”:
通过get函数获得输入的字符,函数strread获得输入字符,并用sqrt函数计算结果,set函数进行显示输出
textString = get(handles.text1,'String');
if(strcmp(textString,'0')==1)
set(handles.text1,'String','0') ;
else
a = strread(textString, '%f');
a=sqrt(a);
set(handles.text1,'String',a)
end
4.2 按键“sin”
通过get函数获得输入的字符,函数strread获得输入字符,并用sin函数计
算结果,set函数进行显示输出:
textString = get(handles.text1,'String');
textString = strcat(textString,'sin(');
set(handles.text1,'String',textString)
4.3 按键“cos”:
textString = get(handles.text1,'String');
textString = strcat(textString,'cos(');
set(handles.text1,'String',textString)
4.4 按键“tan”:
textString = get(handles.text1,'String');
if((strcmp(textString,'1.57')==1)||(strcmp(textString,'-1.57')==1)) set(handles.edit1,'String','inf');
else
textString = strcat(textString,'tan(');
set(handles.text1,'String',textString)
end
4.5 按键“arcsin”:
textString = get(handles.text1,'String');
textString = strcat(textString,'asin(');
set(handles.text1,'String',textString)
4.6 按键“arccos”:
textString = get(handles.text1,'String');
textString = strcat(textString,'acos(');
set(handles.text1,'String',textString)
4.7 按键“arctan”:
textString = get(handles.text1,'String');
textString = strcat(textString,'atan(');
set(handles.text1,'String',textString)
4.8 按键“log2”:
textString = get(handles.text1,'String');
if(strcmp(textString,'0')==1)
set(handles.text1,'String','error') ;
else
a = strread(textString, '%f');
a=log2(a);
set(handles.text1,'String',a)
end
总结:问题及其优化
1.本次课程设计中开始时遇到的问题是数据进行清零后,再输入其他的数据,清零后的字符‘0’仍会保留,会影响其他数据,解决办法是将数据用空格替换掉就实现了清空: set(handles.text1,'String','')
2.在定义正弦余弦等函数的时候,需要注意其定义域,值域的问题。
3.开始时我的“sin”函数编程如下:
textString = get(handles.text1,'String');
a = strread(textString, '%f'); a=sin(a);
set(handles.text1,'String',a)
%这样只能在输入完数据后按“sin”键实现运算,很不直观。
修改后可以实现按下sin键后显示“sin(”再输入要运算的数据之后加上“)”按下“=”键后就可以运算出结果了,这样相对更直观明了。
textString = get(handles.text1,'String');
textString = strcat(textString,'sin(');
set(handles.text1,'String',textString)
4.log2()函数仍然存在bug,需谨慎使用。
第五章心得体会
本次课程设计用MATLAB的GUI接口设计一个简单的计算器,主要对数字及运算“0-9、+、-、×、÷、.、= 、x^2 、√、sin、arcsin、log2”等的代码程序的了解,在设计的过程中也遇到不少的问题,通过和同学的讨论,和老师的交流,让我知道了自己的错误和不足,最终顺利地解决了这些问题。
这次工程设计,使我进一步加深了对课本知识的了解和掌握,巩固了所学的基本知识,更加体会到了MATLAB功能的丰富,更加深刻的认识了MATLAB,熟练了编程设计。
其中对计算器按键的颜色、大小和排版,使我的思维更加的缜密,让我在以后的工作生活中,得到了思维的锻炼。
在以后学习中,我会更加刻苦,以锻炼自己的能力。
参考文献
(1)楼顺天,若玉,俊霞.MATLAB7.x程序设计语言. :电子科技大学(2)威.MATLAB基础与编程入门[M].:电子科技大学
(3)罗华飞.MATLAB GUI设计学习手记[M].:航空航天大学
( 4 ) 阿奇.MATLAB实用教程[M].:电子工业
(5)屹.MATLAB通信仿真开发手册[M].:国防工业
(6)卫国.MATLAB程序设计与应用[M].:高等教育出版
含完整的.m文件和.fig文件的百度网盘打包地址
pan.baidu./s/1borSMwn。