收藏 分销(赏)

MATLAB科学计算器设计.docx

上传人:xrp****65 文档编号:7443155 上传时间:2025-01-04 格式:DOCX 页数:17 大小:275.05KB 下载积分:10 金币
下载 相关 举报
MATLAB科学计算器设计.docx_第1页
第1页 / 共17页
MATLAB科学计算器设计.docx_第2页
第2页 / 共17页


点击查看更多>>
资源描述
目录 计算器的效果图 2 第一章 GUI设计界面 3 1.1打开GUI 3 1.2.添加按钮 3 1.3.根据按钮的作用及视觉效果做一定的修改 4 1.4.保存、添加功能函数 4 1.4.1 数字键编写 4 1.4.2 符号键的编写 4 1.4.3 运算符“=”的编写 5 1.4.4 按键“←back”的编写 5 1.4.5 按键“清空”的编写 5 1.4.6 按键“退出”的编写 5 1.4.7 按键“二进制数转十进制数”的编写 5 1.4.8 按键“十进制数转二进制数”的编写 5 第二章 计算器的使用 6 2.1 除法运算(÷) 6 2.2 平方运算(^2) 6 2.3 函数cos (∏/3) 的计算 7 2.4 函数arctan (∏/3) 的计算 7 2.5 以2为底的对数(log 2)的计算 8 2.6 十进制数转二进制数的计算 8 2.7 二进制数转十进制数的计算 9 第三章 各按键的程序源代码 10 第四章 问题和解决方法 15 第五章 心得体会 16 参考文献 17 计算器的效果图: 第一章 GUI设计界面: 1.1打开GUI 输入Guide 回车或者在工具栏上点击图标打开Guide 窗口: 图 1 1.2.添加按钮 图 2 1.3.根据按钮的作用及视觉效果做一定的修改 双击按钮(Puch Button)进入按键属性修改显示字符串大小、字体和颜色,然后对按钮的位置进行排布,尽量使按钮集中在静态文本框下面。 1.4.保存、添加功能函数 把做好的按钮及静态文本框保存后自动弹出Editor的M文本,对然后对相应的pushbutton添加功能函数。以下是相应按钮的功能函数。 1.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数字按键下编写此类程序。 1.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”功能实现。 1.4.3 运算符“=”的编写 textString = get(handles.text1,'String'); ans =eval(textString); “eval”的作用是将符号表达式转换成数值表达式。 再由set(handles.text1,'String',ans)输出。 1.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) 1.4.5 按键“清空”的编写 set(handles.text1,'String','') 1.4.6 按键“退出”的编写 close(gcf); 1.4.7 按键“二进制数转十进制数”的编写 textString=get(handles.text1,'String') e = bin2dec(textString); set(handles.text1,'String',e); 1.4.8 按键“十进制数转二进制数”的编写 textString = get(handles.text1,'String'); textString = strcat(textString,'dec2bin('); set(handles.text1,'String',textString) 第二章 计算器的使用 2.1 除法运算(÷) 17 / 17 图 3 图 4 2.2 平方运算(^2) 图 5 图 6 2.3 函数cos (∏/3) 的计算 图 7 图 8 2.4 函数arctan (∏/3) 的计算 图 9 图 10 2.5 以2为底的对数(log 2)的计算 图 11 图 12 2.6 十进制数转二进制数的计算(调用dec2bin函数) 图 13 图 14 2.7 二进制数转十进制数的计算(调用bin2dec函数) 图 15 图 16 经过计算,这些结果均与实际结果相吻合,计算器的功能实现的完好且能实现较大数值的运算,计算结果用科学技术法表示。 第三章 各按键的程序源代码 按键“0-9、+、-、×、÷、.、= 、x^2 ”(通过get函数获得输入的字符,函数strcat 获得相应字符,并用set函数进行显示输出): function pushbutton1_Callback(hObject, eventdata, handles) textString=get(handles.text1,'String') textString=strcat(textString,'0') set(handles.text1,'String',textString) function pushbutton2_Callback(hObject, eventdata, handles) textString=get(handles.text1,'String') textString=strcat(textString,'1') set(handles.text1,'String',textString) function pushbutton3_Callback(hObject, eventdata, handles) textString=get(handles.text1,'String') textString=strcat(textString,'2') set(handles.text1,'String',textString) function pushbutton4_Callback(hObject, eventdata, handles) textString=get(handles.text1,'String') textString=strcat(textString,'3') set(handles.text1,'String',textString) function pushbutton5_Callback(hObject, eventdata, handles) textString=get(handles.text1,'String') textString=strcat(textString,'4') set(handles.text1,'String',textString) function pushbutton6_Callback(hObject, eventdata, handles) textString=get(handles.text1,'String') textString=strcat(textString,'5') set(handles.text1,'String',textString) function pushbutton7_Callback(hObject, eventdata, handles) textString=get(handles.text1,'String') textString=strcat(textString,'6') set(handles.text1,'String',textString) function pushbutton8_Callback(hObject, eventdata, handles) textString=get(handles.text1,'String') textString=strcat(textString,'7') set(handles.text1,'String',textString) function pushbutton9_Callback(hObject, eventdata, handles) textString=get(handles.text1,'String') textString=strcat(textString,'8') set(handles.text1,'String',textString) function pushbutton10_Callback(hObject, eventdata, handles) textString=get(handles.text1,'String') textString=strcat(textString,'9') set(handles.text1,'String',textString) function pushbutton11_Callback(hObject, eventdata, handles) textString=get(handles.text1,'String') textString=strcat(textString,'+') set(handles.text1,'String',textString) function pushbutton12_Callback(hObject, eventdata, handles) textString=get(handles.text1,'String') textString=strcat(textString,'-') set(handles.text1,'String',textString) function pushbutton13_Callback(hObject, eventdata, handles) textString=get(handles.text1,'String') textString=strcat(textString,'*') set(handles.text1,'String',textString) function pushbutton14_Callback(hObject, eventdata, handles) textString=get(handles.text1,'String') textString=strcat(textString,'/') set(handles.text1,'String',textString) function pushbutton15_Callback(hObject, eventdata, handles) textString=get(handles.text1,'String') textString=strcat(textString,'.') set(handles.text1,'String',textString) 按键“=” : function pushbutton16_Callback(hObject, eventdata, handles) textString=get(handles.text1,'String') s=eval(textString) set(handles.text1,'String',s) 按键“x^2” : function pushbutton17_Callback(hObject, eventdata, handles) textString=get(handles.text1,'String') textString=strcat(textString,'^2') set(handles.text1,'String',textString) 退位键“←back”: function pushbutton18_Callback(hObject, eventdata, handles) textString=get(handles.text1,'String') w=length(textString) t=char(textString) textString=t(1:w-1) set(handles.text1,'String',textString) 清空键: function pushbutton19_Callback(hObject, eventdata, handles) set(handles.text1,'String','') 退出键: function pushbutton20_Callback(hObject, eventdata, handles) close(gcf); % hObject handle to pushbutton20 (see GCBO) % handles structure with handles and user data (see GUIDATA) 科学计算函数: 按键“√”:通过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 按键“sin” (通过get函数获得输入的字符,函数strread获得输入字符,并用sin函数计算结果,set函数进行显示输出): textString = get(handles.text1,'String'); textString = strcat(textString,'sin('); set(handles.text1,'String',textString) 按键“cos” : textString = get(handles.text1,'String'); textString = strcat(textString,'('); set(handles.text1,'String',textString) 按键“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 按键“arcsin” : textString = get(handles.text1,'String'); textString = strcat(textString,'asin('); set(handles.text1,'String',textString) 按键“arccos” : textString = get(handles.text1,'String'); textString = strcat(textString,'acos('); set(handles.text1,'String',textString) 按键“arctan” : textString = get(handles.text1,'String'); textString = strcat(textString,'atan('); set(handles.text1,'String',textString) 按键“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 按键“(” : textString = get(handles.text1,'String'); textString = strcat(textString,' ('); set(handles.text1,'String',textString) 按键“)” : textString = get(handles.text1,'String'); textString = strcat(textString,')'); set(handles.text1,'String',textString) 按键“二进制数转十进制数” : textString=get(handles.text1,'String') e = bin2dec(textString); set(handles.text1,'String',e); 按键“十进制数转二进制数” : textString = get(handles.text1,'String'); textString = strcat(textString,'dec2bin('); set(handles.text1,'String',textString) 第四章 问题和解决方法 4.1.本次课程设计中开始时遇到的问题是数据进行清零后,再输入其他的数据,清零后的字符‘0’仍会保留,会影响其他数据,解决办法是将数据用空格替换掉就实现了清空: set(handles.text1,'String','') 4.2.在定义正弦余弦等函数的时候,需要注意其定义域,值域的问题。 4.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.4.在编写十进制数转二进制数时,计算的结果总是会在前面多出“110”,使得转换结果错误,后来通过精简改进程序,直接调用des2bin函数计算,所得的测试结果都是正确的。 第五章 心得体会 本次课程设计用MATLAB的GUI接口设计一个简单的计算器,主要对数字及运算“0-9、+、-、×、÷、.、= 、x^2 、√、sin、arcsin、log2”等的代码程序的了解,在设计的过程中也遇到不少的问题,通过和同学的讨论,和老师的交流,让我知道了自己的错误和不足,最终顺利地解决了这些问题。这次课程设计,使我进一步加深了对课本知识的了解和掌握,巩固了所学的基本知识,更加体会到了MATLAB功能的丰富,更加深刻的认识了MATLAB,熟练了编程设计。 其中对计算器按键的颜色、大小和排版,使我的思维更加的缜密,让我在以后的工作生活中,得到了思维的锻炼。在以后学习中,我会更加刻苦,以锻炼自己的能力。 参考文献 (1)刘卫国.MATLAB程序设计与应用[M].北京:高等教育出版 (2)郑阿奇.MATLAB实用教程[M].北京:电子工业出版社 (3)罗华飞.MATLAB GUI设计学习手记[M].北京:北京航空航天大学出版社 ( 4 ) 张威.MATLAB基础与编程入门[M].西安:西安电子科技大学出版社 (5)孙屹.MATLAB通信仿真开发手册[M].北京:国防工业出版社
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 应用文书 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服