matlab课程设计含源代码(总29页_第1页
matlab课程设计含源代码(总29页_第2页
matlab课程设计含源代码(总29页_第3页
matlab课程设计含源代码(总29页_第4页
matlab课程设计含源代码(总29页_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、一、 课程设计的意义通常在开发一个实际的应用程序时都会尽量做到界面友好,最常用的方法就是使用图形界面,而Matlab是一门面向对象的语言。提供图形用户界面的应用程序能够使用的学习和使用更为方便容易。用户不需要知道应用程序究竟是怎样执行各种命令的,而只需要了解可见界面组件的使用方法;用户也不需要知道命令是怎样执行的,只要通过与界面交互就可以是指定的行为得以正确执行,这比用在DOS环境下运行的程序交互性友好。在Matlab中,图形用户界面是一种包含多种对象的图形窗口。用户必须对每一种对象进行界面布局和编程,从而使用户激活GUI每个对象时都能够执行相应的行为。另外,用户必须保存和发布所创建的GUI,

2、使得GUI能够真正地得到应用。Matlab为用户开发图形界面提供了一个方便高效的集成开发环境:Matlab图形用户界面开发环境GUIDE。上述所有工作都能够使用GUIDE方便地实现,GUIDE主要是一个界面设计工具集,Matlab将所有GUIDE支持的用户控件都集成在这个环境中并提供界面外观、属性和行为响应方式的设置方法。GUIDE将用户保存设计好的GUIDE界面保存在一个Fig资源文件中,同时还能够生成包含GUI初始化和组件界面布局控制的M文件。这个M文件为实现回调函数提供了一个参考框架。这次不到一周课程设计使我对Matlab有了更深刻的认识,尤其是编程方面,掌握了一些编程思维,这对我们以后

3、再学习其它语言是有很大的益处的,掌握一种编程思维方式比多学几门语言都有用。2、 课程设计的要求1.用GUI设计一个计算器要求至少完成加、减、乘、除功能; 扩充:矩阵运算(加、减、点乘,点除,乘,除,乘方等)2.设计一个绘图界面要求能选择绘制二维曲线,三维曲线,三维网格,三维曲面,柱状图,饼图等功能。要求界面要整齐划一,富有美感。需求分析和总体设计1、 任务描述1.课程设计目标 用GUIDE编写一个简易计算器和一个能自动画图的程序。2.功能描述(1).计算器能实现的功能 加、减、乘、除、乘方、开方; 可以后退、清零; 可以更换背景颜色、查看帮助等操作。(2).画图程序能实现的功能 可以画出二维曲

4、线、三维曲线、三维网格、三维曲面、柱状图、饼图; 有简单菜单(就包括一项:文件)。2、 任务设计 1.计算器(1).运行Matlab主程序;(2).新建Gui文件命名为“wodejisuanqi.fig” ;(3).在出现的界面创建需要的文本框(tag为wenben),按钮:0、1、2、3、4、5、6、7、8、9、CE(清零)、backplace(后退)、+、- 、 *、 、 . ,菜单:(文件,关闭);背景色(浅紫色,浅绿色,粉红色,默认色);帮助(关于)。 (4).编写M文件。2.画图(1).运行Matlab主程序;(2).新建Gui文件并命名为“huatu.fig”;(3).再出现的界面

5、创建需要的坐标系(tag为zuobiaoxi),按钮:二维曲线、三位曲线、三维网格、三维曲面、柱状图、饼状图;(4).将它们的tag都设为它们的汉语拼音;(5).编写M文件。第3章 编码1、 代码编写步骤1、 计算器(1) .主函数 在主函数fanction wodejisuanqi-OpeningFcn中编写主函数代码。先申请一个全局变量s ,用于判断文本框里的字符串是不是有:+、- 、 *、,如果有的话,就把s置为1,否则,置为0。再获得文本框中字符串的句柄,并赋给变量h。申请全局变量p,为了判断响应等号时文本框里的运算符号,其中令p=是没有实际意义的,只是为了判断运算符不是加减乘除中的任

6、一个。代码如下:global s ;h=get(handles.wenben,string);switch(h) case+,-,*, s=1; otherwise s=0;endglobal p;p=;(2) .数字函数在这个函数里主要是判断文本框里是不是有加减乘除符号,如果有的话,就把文本框中的字符串设置为数字,否则,再判断是不是0,是的话,就把文本框中的值置为数字,不是的话,就把数字连接到文本框中的字符串上。代码如下(以0为例):global s;hh=handles.wenben; %把文本框的句柄赋给hhif(s=1) set(hh,string,0); s=0; %把s再次置为0,

7、为了下次判断不出错elseif(s=0) h=get(hh,string); switch(h) %在判断h是否为0 case 0; set(hh,string,0); otherwise t=strcat(h,0); %把0连接到原有的字符后面 set(hh,string,t); endend(3) .小数点函数 判断原来文本框里有几个小数点,如果有的话,就保持不变,否则,加上小数点。判断方法是用strfind函数,测试其返回的矩阵大小。代码如下: hh=handles.wenben; a=get(hh,string); set(hh,string,.); b=get(hh,string);

8、 c=strcat(a,.); p,q=size(m); %测试矩阵m if q=1 set(hh,string,a); else set(hh,string,c);end(4) 运算符号(以加号为例)函数申请全局变量p,s,v1,p用于响应等号时判断,s用于判断按加好时文本框里是不是有加减乘除,如果没有就把文本框里的字符串转换成数字,并赋给全局变量v1。代码如下:hh=handles.wenben;p=+;global s;if(s=0) global v1; %按加号之前的数值 v1=str2num(get(hh,string); s=1;end(5) .根号和幂(以根号为例)函数申请全局

9、变量s,如果s=0,即文本框里没有加减乘除符号,就把文本框里的字符串转换成数字并开方。代码如下:hh=handles.wenben;global s;if (s=0)r=sqrt(str2num(get(hh,String);set(hh,String,num2str(r);end(6).等号函数 这是整个程序中最重要的一个函数,申请全局变量p,判断p的值,并作出相应的处理。代码如下:hh=handles.wenben;global v1;global v2;global v3;global v4;global v5;global v6;v5=str2num(get(hh,string);gl

10、obal p;switch(p) case+; r=v1+v5 set(hh,string,num2str(r); v1=0; p= ; case-; r=v2-v5; set(hh,string,num2str(r); v2=0; p= ; case*; r=v3*v5; set(hh,string,num2str(r); v3=0; p= ; case/; r=v4/v5; set(hh,string,num2str(r); v4=0; p= ; case; r=v6v5; set(hh,string,num2str(r); v5=0; p= ; otherwise b=(get(hh,s

11、tring) set(hh,string,b) end(7) 菜单函数(以颜色中的粉红色为例)设置面板(tag为pane)的background属性。代码如下:set(handles.pane,backgroundcolor,0.992 0.51 0.627);set(handles.biaoti,backgroundcolor,0.992 0.51 0.627);2、 画图程序 (1).画图按钮函数(以二维曲线函数为例)代码如下:x=0:0.1:2*pi;y=0:0.1:2*pi;y=sin(x);plot(handles.zuobiao,x,y)(2) . 菜单函数 文件中的关闭函数,代码

12、如下:function guanbi_Callback(hObject, eventdata, handles)close;2、 遇到问题及解决方案 1 、在计算器方面,刚做完时漏洞比较多,最严重的是小数点可以连续输入,很不方便。解决方法是:用strfind函数查看文本框里有几个小数点,如果已经有一个了,再按小数点就保持不变。另外一个漏洞是按过运算符号后一个数不等于一个数,比如:输入1,按等号,会出来一个3,经过长时间分析得知,这是由于在按运算符号时,系统记录了文本框里的数但没有清空,才会出现这种问题。解决方法是再申请一个不同于加减乘除的另一个符号,并将按过运算符后记录的数值置0,问题解决,很

13、高兴。 2 、在画图程序中基本上没什么难度,就是有的图形不能在规定的坐标系中出现。解决方法,先获得坐标系的句柄,在画图,问题解决。三 程序运行结果1 、计算器程序2、 画图程序(1) .初始界面 (2).按二维曲线按钮后的界面(3) 按三维曲线按钮后的界面(4) 按三维曲面后的界面(5) .按三维网格按钮后的界面(6) .按柱形图按钮后的界面(7).按饼图按钮后的界面第4章 感想认识经过不到一周的matlab课程设计使我感觉到,学习一学期的知识还是有些不连贯,造成编程时,没有思路,有不会的只好去网上查询,有时候会因为某个帖子是我茅塞顿开,从而有了思路,完成了课程设计的任务。Matlab Gui

14、是很有用的东西,比我们学的C语言界面好看,又有实用价值。以后我还要学习matlab,为了迎接考试也是为了自己以后能够用到。附录(源代码)1、 计算器function varargout = wodejisuanqi(varargin)gui_Singleton = 1;gui_State = struct(gui_Name, mfilename, . gui_Singleton, gui_Singleton, . gui_OpeningFcn, wodejisuanqi_OpeningFcn, . gui_OutputFcn, wodejisuanqi_OutputFcn, . gui_Lay

15、outFcn, , . gui_Callback, );if nargin & ischar(varargin1) gui_State.gui_Callback = str2func(varargin1);endif nargout varargout1:nargout = gui_mainfcn(gui_State, varargin:);else gui_mainfcn(gui_State, varargin:);end% End initialization code - DO NOT EDIT% - Executes just before wodejisuanqi is made v

16、isible.function wodejisuanqi_OpeningFcn(hObject, eventdata, handles, varargin)global s;h=get(handles.wenben,string);switch(h) case+,-,*, s=1; otherwise s=0;endglobal p;p=;handles.output = hObject;guidata(hObject, handles);% function varargout = wodejisuanqi_OutputFcn(hObject, eventdata, handles) var

17、argout1 = handles.output; % - Outputs from this function are returned to the command line.function wenben_Callback(hObject, eventdata, handles)% - Executes during object creation, after setting all properties.function wenben_CreateFcn(hObject, eventdata, handles)if ispc & isequal(get(hObject,Backgro

18、undColor), get(0,defaultUicontrolBackgroundColor) set(hObject,BackgroundColor,white);end% - Executes on button press in point.function point_Callback(hObject, eventdata, handles)hh=handles.wenben;a=get(hh,string);set(hh,string,.);b=get(hh,string);c=strcat(a,b);m=strfind(a,.);p,q=size(m);if q=1 set(h

19、h,string,a);else set(hh,string,c);end% - Executes on button press in zero.function zero_Callback(hObject, eventdata, handles)global s;hh=handles.wenben;if(s=1) set(hh,string,0); s=0;elseif(s=0) h=get(hh,string); switch(h) case 0; set(hh,string,0); otherwise t=strcat(h,0); set(hh,string,t); endend% -

20、 Executes on button press in one.function one_Callback(hObject, eventdata, handles)global s;hh=handles.wenben;if(s=1) set(hh,string,1); s=0;elseif(s=0) h=get(hh,string); switch(h) case 0; set(hh,string,1); otherwise t=strcat(h,1); set(hh,string,t); endend% - Executes on button press in two.function

21、two_Callback(hObject, eventdata, handles)global s;hh=handles.wenben;if(s=1) set(hh,string,2); s=0;elseif(s=0) h=get(hh,string); switch(h) case 0; set(hh,string,2); otherwise t=strcat(h,2); set(hh,string,t); endend% - Executes on button press in three.function three_Callback(hObject, eventdata, handl

22、es)global s;hh=handles.wenben;if(s=1) set(hh,string,3); s=0;elseif(s=0) h=get(hh,string); switch(h) case 0; set(hh,string,3); otherwise t=strcat(h,3); set(hh,string,t); endend% - Executes on button press in four.function four_Callback(hObject, eventdata, handles)global s;hh=handles.wenben;if(s=1) se

23、t(hh,string,4); s=0;elseif(s=0) h=get(hh,string); switch(h) case 0; set(hh,string,4); otherwise t=strcat(h,4); set(hh,string,t); endend% - Executes on button press in five.function five_Callback(hObject, eventdata, handles)global s;hh=handles.wenben;if(s=1) set(hh,string,5); s=0;elseif(s=0) h=get(hh

24、,string); switch(h) case 0; set(hh,string,5); otherwise t=strcat(h,5); set(hh,string,t); endend% - Executes on button press in six.function six_Callback(hObject, eventdata, handles)global s;hh=handles.wenben;if(s=1) set(hh,string,6); s=0;elseif(s=0) h=get(hh,string); switch(h) case 0; set(hh,string,

25、6); otherwise t=strcat(h,6); set(hh,string,t); endend% - Executes on button press in seven.function seven_Callback(hObject, eventdata, handles)global s;hh=handles.wenben;if(s=1) set(hh,string,7); s=0;elseif(s=0) h=get(hh,string); switch(h) case 0; set(hh,string,7); otherwise t=strcat(h,7); set(hh,st

26、ring,t); endend% - Executes on button press in eight.function eight_Callback(hObject, eventdata, handles)global s;hh=handles.wenben;if(s=1) set(hh,string,8); s=0;elseif(s=0) h=get(hh,string); switch(h) case 0; set(hh,string,8); otherwise t=strcat(h,8); set(hh,string,t); endend% - Executes on button

27、press in nine.function nine_Callback(hObject, eventdata, handles)global s;hh=handles.wenben;if(s=1) set(hh,string,9); s=0;elseif(s=0) h=get(hh,string); switch(h) case 0; set(hh,string,9); otherwise t=strcat(h,9); set(hh,string,t); endend% -function wenjian_Callback(hObject, eventdata, handles)% -fun

28、ction guanbi_Callback(hObject, eventdata, handles)close;% -function qianlvse_Callback(hObject, eventdata, handles)set(handles.pane,backgroundcolor,0.6 0.902 0.608);set(handles.biaoti,backgroundcolor,0.6 0.902 0.608);% -function beijingse_Callback(hObject, eventdata, handles)% -function moren_Callbac

29、k(hObject, eventdata, handles)set(handles.pane,backgroundcolor,0.502, 0.502 1.0);set(handles.biaoti,backgroundcolor,0.502, 0.502 1.0);% -function qianzise_Callback(hObject, eventdata, handles)set(handles.pane,backgroundcolor,0.855 0.561 0.937);set(handles.biaoti,backgroundcolor,0.855 0.561 0.937);%

30、-function fenhongse_Callback(hObject, eventdata, handles)set(handles.pane,backgroundcolor,0.992 0.51 0.627);set(handles.biaoti,backgroundcolor,0.992 0.51 0.627);% -function bangzhu_Callback(hObject, eventdata, handles)% -function guanyu_Callback(hObject, eventdata, handles)msgbox( ,warn);global p;p=

31、;% - Executes on button press in jia.function jia_Callback(hObject, eventdata, handles)global p;hh=handles.wenben;p=+;global s;if(s=0) global v1; v1=str2num(get(hh,string); s=1;end% - Executes on button press in jian.function jian_Callback(hObject, eventdata, handles)global p;hh=handles.wenben;p=-;g

32、lobal s;if(s=0) global v2; v2=str2num(get(hh,string); s=1;end% - Executes on button press in cheng.function cheng_Callback(hObject, eventdata, handles)global p;hh=handles.wenben;p=*;global s;if(s=0) global v3; v3=str2num(get(hh,string); s=1;end% - Executes on button press in chu.function chu_Callbac

33、k(hObject, eventdata, handles)global p;hh=handles.wenben;p=/;global s;if(s=0) global v4; v4=str2num(get(hh,string); s=1;end% - Executes on button press in gen.function gen_Callback(hObject, eventdata, handles)hh=handles.wenben;global s;if (s=0)r=sqrt(str2num(get(hh,String);set(hh,String,num2str(r);e

34、nd% - Executes on button press in mi.function mi_Callback(hObject, eventdata, handles)global p;hh=handles.wenben;p=;global s;if(s=0) global v6; v6=str2num(get(hh,string); s=1;end% - Executes on button press in deng.function deng_Callback(hObject, eventdata, handles)hh=handles.wenben;global v1;global

35、 v2;global v3;global v4;global v5;global v6;v5=str2num(get(hh,string);global p;switch(p) case+; r=v1+v5 set(hh,string,num2str(r); v1=0; p= ; case-; r=v2-v5; set(hh,string,num2str(r); v2=0; p= ; case*; r=v3*v5; set(hh,string,num2str(r); v3=0; p= ; case/; r=v4/v5; set(hh,string,num2str(r); v4=0; p= ;

36、case; r=v6v5; set(hh,string,num2str(r); v5=0; p= ; otherwise b=(get(hh,string) set(hh,string,b) end% - Executes on button press in ce.function ce_Callback(hObject, eventdata, handles)hh=handles.wenben;set(hh,string,0);% - Executes on button press in pushbutton20.function pushbutton20_Callback(hObjec

37、t, eventdata, handles)% - Executes on button press in pushbutton22.function pushbutton22_Callback(hObject, eventdata, handles)% - Executes on button press in backplace.function backplace_Callback(hObject, eventdata, handles)hh=get(handles.wenben,String);t=length(hh);set(handles.wenben,String,hh(1:t-

38、1); % - Executes during object creation, after setting all properties.function pane_CreateFcn(hObject, eventdata, handles)2、 画图function varargout = huatu(varargin)% Begin initialization code - DO NOT EDITgui_Singleton = 1;gui_State = struct(gui_Name, mfilename, . gui_Singleton, gui_Singleton, . gui_

39、OpeningFcn, huatu_OpeningFcn, . gui_OutputFcn, huatu_OutputFcn, . gui_LayoutFcn, , . gui_Callback, );if nargin & ischar(varargin1) gui_State.gui_Callback = str2func(varargin1);endif nargout varargout1:nargout = gui_mainfcn(gui_State, varargin:);else gui_mainfcn(gui_State, varargin:);end% End initial

40、ization code - DO NOT EDIT% - Executes just before huatu is made visible.function huatu_OpeningFcn(hObject, eventdata, handles, varargin)% Choose default command line output for huatuhandles.output = hObject;% Update handles structureguidata(hObject, handles);% - Outputs from this function are returned to the

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论