基于MATLAB科学计算器.docx
- 文档编号:15361370
- 上传时间:2023-07-03
- 格式:DOCX
- 页数:19
- 大小:243.21KB
基于MATLAB科学计算器.docx
《基于MATLAB科学计算器.docx》由会员分享,可在线阅读,更多相关《基于MATLAB科学计算器.docx(19页珍藏版)》请在冰点文库上搜索。
基于MATLAB科学计算器
计算器得效果图:
一、GUI设计界面:
1。
打开GUI
输入Guide回车或者在工具栏上点击图标打开Guide窗口:
2。
添加按钮
3、根据按钮得作用及视觉效果做一定得修改:
双击按钮(PuchButton)进入按键属性修改显示字符串大小、字体与颜色,然后对按钮得位置进行排布,尽量使按钮集中在静态文本框下面、
4、保存、添加功能函数
把做好得按钮及静态文本框保存后自动弹出Editor得M文本,对然后对相应得pushbutton添加功能函数。
以下就是相应按钮得功能函数。
(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)符号键得编写
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”功能实现。
(3)运算符“="得编写
textString=get(handles、text1,'String');
ans=eval(textString);
“eval”得作用就是将符号表达式转换成数值表达式。
再由set(handles。
text1,’String’,ans)输出。
(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)
(5)按键“清空"得编写
set(handles。
text1,'String','')
(6)按键“退出"得编写
close(gcf);
(7)按键“二进制数转十进制数”得编写
textString=get(handles。
text1,'String')
e=bin2dec(textString);
set(handles。
text1,’String’,e);
(8)按键“十进制数转二进制数”得编写
textString=get(handles、text1,’String');
textString=strcat(textString,'dec2bin(');
set(handles、text1,'String',textString)
二、计算器得使用
除法运算(÷)
平方运算(^2)
函数cos(∏/3)得计算
函数arctan(∏/3)得计算
以2为底得对数得计算(log2)
十进制数转二进制数得计算(调用dec2bin函数)
二进制数转十进制数得计算(调用bin2dec函数)
经过计算,这些结果均与实际结果相吻合,计算器得功能实现得完好且能实现较大数值得运算,计算结果用科学技术法表示。
三、附各按键得程序源代码
按键“0-9、+、—、×、÷、、、=、x^2”(通过get函数获得输入得字符,函数strcat获得相应字符,并用set函数进行显示输出):
functionpushbutton1_Callback(hObject,eventdata,handles)
textString=get(handles。
text1,'String')
textString=strcat(textString,'0')
set(handles。
text1,’String',textString)
functionpushbutton2_Callback(hObject,eventdata,handles)
textString=get(handles。
text1,'String')
textString=strcat(textString,’1')
set(handles、text1,'String’,textString)
functionpushbutton3_Callback(hObject,eventdata,handles)
textString=get(handles、text1,'String')
textString=strcat(textString,'2’)
set(handles。
text1,'String’,textString)
functionpushbutton4_Callback(hObject,eventdata,handles)
textString=get(handles、text1,’String’)
textString=strcat(textString,’3’)
set(handles。
text1,'String’,textString)
functionpushbutton5_Callback(hObject,eventdata,handles)
textString=get(handles、text1,'String’)
textString=strcat(textString,'4')
set(handles、text1,'String’,textString)
functionpushbutton6_Callback(hObject,eventdata,handles)
textString=get(handles。
text1,’String’)
textString=strcat(textString,'5')
set(handles、text1,'String',textString)
functionpushbutton7_Callback(hObject,eventdata,handles)
textString=get(handles。
text1,’String')
textString=strcat(textString,’6’)
set(handles、text1,’String’,textString)
functionpushbutton8_Callback(hObject,eventdata,handles)
textString=get(handles、text1,’String’)
textString=strcat(textString,'7’)
set(handles。
text1,'String’,textString)
functionpushbutton9_Callback(hObject,eventdata,handles)
textString=get(handles。
text1,'String’)
textString=strcat(textString,’8')
set(handles。
text1,'String’,textString)
functionpushbutton10_Callback(hObject,eventdata,handles)
textString=get(handles、text1,'String')
textString=strcat(textString,’9’)
set(handles。
text1,’String',textString)
functionpushbutton11_Callback(hObject,eventdata,handles)
textString=get(handles、text1,’String')
textString=strcat(textString,'+’)
set(handles。
text1,'String’,textString)
functionpushbutton12_Callback(hObject,eventdata,handles)
textString=get(handles、text1,'String’)
textString=strcat(textString,’—')
set(handles。
text1,’String’,textString)
functionpushbutton13_Callback(hObject,eventdata,handles)
textString=get(handles。
text1,’String’)
textString=strcat(textString,'*')
set(handles。
text1,'String’,textString)
functionpushbutton14_Callback(hObject,eventdata,handles)
textString=get(handles。
text1,’String')
textString=strcat(textString,’/')
set(handles、text1,’String',textString)
functionpushbutton15_Callback(hObject,eventdata,handles)
textString=get(handles、text1,’String’)
textString=strcat(textString,'、')
set(handles。
text1,’String',textString)
按键“=”:
functionpushbutton16_Callback(hObject,eventdata,handles)
textString=get(handles、text1,'String’)
s=eval(textString)
set(handles。
text1,'String',s)
按键“x^2”:
functionpushbutton17_Callback(hObject,eventdata,handles)
textString=get(handles。
text1,'String’)
textString=strcat(textString,'^2’)
set(handles、text1,'String’,textString)
退位键“←back”:
functionpushbutton18_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)
清空键:
functionpushbutton19_Callback(hObject,eventdata,handles)
set(handles。
text1,’String',’’)
退出键:
functionpushbutton20_Callback(hObject,eventdata,handles)
close(gcf);
%hObjecthandletopushbutton20(seeGCBO)
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
科学计算函数:
按键“√”:
通过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)
四、问题与解决方法
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、在编写十进制数转二进制数时,计算得结果总就是会在前面多出“110”,使得转换结果错误,后来通过精简改进程序,直接调用des2bin函数计算,所得得测试结果都就是正确得。
五、心得体会
本次课程设计用MATLAB得GUI接口设计一个简单得计算器,主要对数字及运算“0—9、+、-、×、÷、。
、=、x^2、√、sin、arcsin、log2”等得代码程序得了解,在设计得过程中也遇到不少得问题,通过与同学得讨论,与老师得交流,让我知道了自己得错误与不足,最终顺利地解决了这些问题。
这次课程设计,使我进一步加深了对课本知识得了解与掌握,巩固了所学得基本知识,更加体会到了MATLAB功能得丰富,更加深刻得认识了MATLAB,熟练了编程设计、
其中对计算器按键得颜色、大小与排版,使我得思维更加得缜密,让我在以后得工作生活中,得到了思维得锻炼。
在以后学习中,我会更加刻苦,以锻炼自己得能力。
参考文献
(1)刘卫国。
《MATLAB程序设计与应用》。
北京:
高等教育出版
(2)郑阿奇。
《MATLAB实用教程》。
北京:
电子工业出版社
(3)罗华飞。
《MATLABGUI设计学习手记》、北京:
北京航空航天大学出版社
(4)张威、《MATLAB基础与编程入门》。
西安:
西安电子科技大学出版社
(5)孙屹。
《MATLAB通信仿真开发手册》、北京:
国防工业出版社
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 MATLAB 科学 计算器