MATLAB科学计算器设计.docx

上传人:b****7 文档编号:24022578 上传时间:2023-05-23 格式:DOCX 页数:21 大小:245.13KB
下载 相关 举报
MATLAB科学计算器设计.docx_第1页
第1页 / 共21页
MATLAB科学计算器设计.docx_第2页
第2页 / 共21页
MATLAB科学计算器设计.docx_第3页
第3页 / 共21页
MATLAB科学计算器设计.docx_第4页
第4页 / 共21页
MATLAB科学计算器设计.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

MATLAB科学计算器设计.docx

《MATLAB科学计算器设计.docx》由会员分享,可在线阅读,更多相关《MATLAB科学计算器设计.docx(21页珍藏版)》请在冰豆网上搜索。

MATLAB科学计算器设计.docx

MATLAB科学计算器设计

计算器的效果图2

第一章GUI设计界面3

1.1打开GUI3

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为底的对数(log2)的计算8

2.6十进制数转二进制数的计算8

2.7二进制数转十进制数的计算9

第三章各按键的程序源代码10

第四章问题和解决方法15

第五章心得体会16

参考文献17

计算器的效果图:

第一章GUI设计界面:

1.1打开GUI

输入Guide回车或者在工具栏上点击图标

打开Guide窗口:

图1

1.2.添加按钮

图2

1.3.根据按钮的作用及视觉效果做一定的修改

双击按钮(PuchButton)进入按键属性修改显示字符串大小、字体和颜色,然后对按钮的位置进行排布,尽量使按钮集中在静态文本框下面。

1.4.保存、添加功能函数

把做好的按钮及静态文本框保存后自动弹出Editor的M文本,对然后对相应的pushbutton添加功能函数。

以下是相应按钮的功能函数。

1.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数字按键下编写此类程序。

1.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”功能实现。

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除法运算(÷)

图3

图4

2.2平方运算(^2)

图5

图6

 

2.3函数cos(∏/3)的计算

图7

图8

2.4函数arctan(∏/3)的计算

图9

图10

2.5以2为底的对数(log2)的计算

图11

图12

2.6十进制数转二进制数的计算(调用dec2bin函数)

图13

图14

2.7二进制数转十进制数的计算(调用bin2dec函数)

图15

图16

 

经过计算,这些结果均与实际结果相吻合,计算器的功能实现的完好且能实现较大数值的运算,计算结果用科学技术法表示。

 

第三章各按键的程序源代码

按键“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)

 

第四章问题和解决方法

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)罗华飞.MATLABGUI设计学习手记[M].北京:

北京航空航天大学出版社

(4)张威.MATLAB基础与编程入门[M].西安:

西安电子科技大学出版社

(5)孙屹.MATLAB通信仿真开发手册[M].北京:

国防工业出版社

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 材料科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1