基于Matlab的简易计算器.docx
《基于Matlab的简易计算器.docx》由会员分享,可在线阅读,更多相关《基于Matlab的简易计算器.docx(17页珍藏版)》请在冰豆网上搜索。
基于Matlab的简易计算器
工程设计报告
设计题目:
基于Matlab的简易计算器
学院:
专业:
班级:
学号:
姓名:
电子:
日期:
2015年12月
成绩:
指导教师:
…………………………装………………………………订………………………………线………………………………………………………………
西安电子科技大学
电子工程学院
工程设计任务书
学生指导教师职称
学生学号专业
题目基于Matlab的简易计算器
任务与要求
任务如下:
利用MATLABGUI设计实现一个图形用户界面的计算器程序,实现:
A.实现十进制数的加、减、乘、除、简单计算。
B.科学计算函数,包括正弦、余弦、正切、余切、开方、指数等函数运行。
C.有清除键,能清除操作。
要求如下:
A.熟练掌握MatlabGUI界面的设计与应用
B.最终计算器能够实现预期的相关功能
开始日期2015年11月日完成日期2016年1月日
课程设计所在单位
本表格由电子工程学院网络信息中心编辑录入.
摘要
基于MatlabGUI计算器设计时利用GUI的创建图像用户界面进行计算器设计。
设计计算器时,主要是考虑到计算器的易用性、功能的常用程度进行计算器界面与功能的设计。
通过调整控件和文本的布局及颜色,使界面简单大方、布局合理,达到界面友好的效果。
计算器设计时主要利用到get和set两个函数进行各个控件属性值的传递和设置。
计算器实现的功能有:
数字0~9和小数点的输入显示,平方开方和对数的输入显示。
进行四则运算、正弦函数、余弦函数、正切函数以及反正弦函数、反余弦函数、反正切函数的计算等等。
最后运行调试,实现基于MatlabGUI的计算器的设计。
关键词:
MatlabGUI计算器
Abstracts
BasedonMatlabGUIcalculatordesignusingtheuserinterfacetocreateimagesofGUIcalculatordesign.Designcalculator,mainlyconsideringtheeaseofuse,functioncalculatorscalculatorinterfaceandfunctionofthecommonlevelofdesign.Byadjustingthecontrolandthelayoutofthetextandcolor,maketheinterfacesimpleandeasy,rationallayout,toachievetheeffectoffriendlyinterface.
CalculatordesignusedtogetandsettwomainfunctionforeachattributevaluetransferandcontrolSettings.Calculatorthefunctionsare:
0~9,accordingtoinputanddecimalsquarerootandlogarithmofinput.Arithmetic,sinefunctionandcosinefunction,tangentfunctionandthearcsinefunction,arccosinefunction,thecalculationofthearctangentfunctionandsoon.Finallyrunningdebugging,implementationdesignbasedonMatlabGUIcalculator.
Keywords:
MatlabGUIcalculator
第一章绪论
1.MATLAB简介:
MATLAB是matrix和laboratory两个词的组合,意为矩阵工厂(矩阵实验室)。
是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。
它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。
MATLAB和Mathematica、Maple并称为三大数学软件。
它在数学类科技应用软件中在数值计算方面首屈一指。
MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
2.本文安排:
本文第一章是绪论部分,主要是关于Matlab的一个介绍,以及对本文的一个大体上的容上的安排。
本文第二章侧重介绍了如何运用Matlab中GUI界面功能设计一个合理的、实用的简易计算器,并且介绍了如何在设计好的计算器中添加功能函数,实现预期的相关功能。
本文第三章粗略的介绍的计算器的基本使用方法以及相关的一些计算器功能实现效果的检验,并对检验结果作简单的分析介绍。
本文第四章主要对部分特殊函数的源代码作简单的分析与介绍,以及总结程序在设计过程中发现的问题及其相应的优化方案。
本文第五章是对本次作业的心得体会。
本文最后是相关的参考文献
第二章GUI设计界面
计算器的效果图:
图1
图2
2.1打开GUI
输入Guide回车或者在工具栏上点击图标
打开Guide窗口:
图3
2.2.添加按钮
图4
2.3.根据按钮的作用及视觉效果做一定的修改
双击按钮(PuchButton)进入按键属性修改显示字符串大小、字体和颜色,然后对按钮的位置进行排布,尽量使按钮集中在静态文本框下面。
图5
2.4.保存、添加功能函数
把做好的按钮及静态文本框保存后自动弹出Editor的M文本,对然后对相应的pushbutton添加功能函数。
以下是相应按钮的功能函数。
2.4.1数字键编写
在functionpushbutton1_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中输出。
同理,分别在functionpushbutton2~10_Callback(hObject,eventdata,handles)下给1~9数字按键下编写此类程序。
2.4.2符号键的编写
functionpushbutton12_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为底的对数(log2)的计算
图14
图15
调试的时候发现一个问题,发现以2为底的对数(log2)计算需要先输入数字,然后点击log2按钮键直接可以计算出正确的结果,但是不能按照普通计算器那样先安log2按钮键然后输入要计算的数字,再安=键显示结果,说明书写的程序还有一些bug,但是我调试后仍然没有能够发现问题所在,所以该功能还需谨慎使用。
1
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)罗华飞.MATLABGUI设计学习手记[M].:
航空航天大学
(4)阿奇.MATLAB实用教程[M].:
电子工业
(5)屹.MATLAB通信仿真开发手册[M].:
国防工业
(6)卫国.MATLAB程序设计与应用[M].:
高等教育出版
含完整的.m文件和.fig文件的XX网盘打包地址
pan.baidu./s/1borSMwn