matlab课程设计含源代码.pdf
《matlab课程设计含源代码.pdf》由会员分享,可在线阅读,更多相关《matlab课程设计含源代码.pdf(33页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、一、课程设计的意义 通常在开发一个实际的应用程序时都会尽量做到界面友好,最常用的方法就是使用图形界面,而 Matlab 是一门面向对象的语言。提供图形用户界面的应用程序能够使用的学习和使用更为方便容易。用户不需要知道应用程序究竟是怎样执行各种命令的,而只需要了解可见界面组件的使用方法;用户也不需要知道命令是怎样执行的,只要通过与界面交互就可以是指定的行为得以正确执行,这比用在 DOS 环境下运行的程序交互性友好。在 Matlab 中,图形用户界面是一种包含多种对象的图形窗口。用户必须对每一种对象进行界面布局和编程,从而使用户激活 GUI 每个对象时都能够执行相应的行为。另外,用户必须保存和发布
2、所创建的 GUI,使得 GUI 能够真正地得到应用。Matlab 为用户开发图形界面提供了一个方便高效的集成开发环境:Matlab图形用户界面开发环境GUIDE。上述所有工作都能够使用 GUIDE 方便地实现,GUIDE 主要是一个界面设计工具集,Matlab将所有GUIDE支持的用户控件都集成在这个环境中并提供界面外观、属性和行为响应方式的设置方法。GUIDE 将用户保存设计好的 GUIDE 界面保存在一个 Fig 资源文件中,同时还能够生成包含 GUI 初始化和组件界面布局控制的 M 文件。这个 M 文件为实现回调函数提供了一个参考框架。这次不到一周课程设计使我对 Matlab 有了更深刻
3、的认识,尤其是编程方面,掌握了一些编程思维,这对我们以后再学习其它语言是有很大的益处的,掌握一种编程思维方式比多学几门语言都有用。二、课程设计的要求 1.用 GUI 设计一个计算器要求至少完成加、减、乘、除功能;扩充:矩阵运算(加、减、点乘,点除,乘,除,乘方等)-2.设计一个绘图界面要求能选择绘制二维曲线,三维曲线,三维网格,三维曲面,柱状图,饼图等功能。要求界面要整齐划一,富有美感。需求分析和总体设计 一、任务描述 1.课程设计目标 用 GUIDE 编写一个简易计算器和一个能自动画图的程序。2.功能描述(1).计算器能实现的功能 加、减、乘、除、乘方、开方;可以后退、清零;可以更换背景颜色
4、、查看帮助等操作。(2).画图程序能实现的功能 可以画出二维曲线、三维曲线、三维网格、三维曲面、柱状图、饼图;有简单菜单(就包括一项:文件)。二、任务设计 1.计算器 (1).运行 Matlab 主程序;(2).新建 Gui 文件命名为“”;(3).在出现的界面创建需要的文本框(tag 为 wenben),按钮:0、1、2、3、4、5、6、7、8、9、CE(清零)、backplace(后退)、+、-、*、.,菜单:(文件,关闭);背景色(浅紫色,浅绿色,粉红色,默认色);帮助(关于)。(4).编写 M 文件。2.画图(1).运行 Matlab主程序;(2).新建 Gui 文件并命名为“”;:(
5、3).再出现的界面创建需要的坐标系(tag 为 zuobiaoxi),按钮:二维曲线、三位曲线、三维网格、三维曲面、柱状图、饼状图;(4).将它们的 tag 都设为它们的汉语拼音;(5).编写 M 文件。第 3 章 编码 一、$二、代码编写步骤 1、计算器(1).主函数 在主函数 fanction wodejisuanqi-OpeningFcn 中编写主函数代码。先申请一个全局变量 s,用于判断文本框里的字符串是不是有:+、-、*、,如果有的话,就把 s 置为 1,否则,置为 0。再获得文本框中字符串的句柄,并赋给变量 h。申请全局变量 p,为了判断响应等号时文本框里的运算符号,其中令 p=是
6、没有实际意义的,只是为了判断运算符不是加减乘除中的任一个。代码如下:global s;h=get,string);switch(h)case+,-,*,、s=1;otherwise s=0;end global p;p=;(2).数字函数 在这个函数里主要是判断文本框里是不是有加减乘除符号,如果有的话,就把文本框中的字符串设置为数字,否则,再判断是不是 0,是的话,就把文本框中的值置为数字,不是的话,就把数字连接到文本框中的字符串上。代码如下(以 0 为例):global s;hh=;%把文本框的句柄赋给 hh if(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);end end(3).小数点函数/判断原来文本框里有几个小数点,如果有的话,就保持不变,否则,加上小数点。判断方法是用 strfind 函数,测试其返回的矩阵大小。代码如下:hh=;a=get(hh,string);set(hh,string,.);b=get(hh,string);c=strcat(a,.);p,q=
8、size(m);%测试矩阵 m if q=1、set(hh,string,a);else set(hh,string,c);end(4)运算符号(以加号为例)函数 申请全局变量 p,s,v1,p 用于响应等号时判断,s 用于判断按加好时文本框里是不是有加减乘除,如果没有就把文本框里的字符串转换成数字,并赋给全局变量 v1。代码如下:hh=;p=+;$global s;if(s=0)global v1;%按加号之前的数值 v1=str2num(get(hh,string);s=1;end(5).根号和幂(以根号为例)函数 申请全局变量 s,如果 s=0,即文本框里没有加减乘除符号,就把文本框里的
9、字符串转换成数字并开方。代码如下:】hh=;global s;if(s=0)r=sqrt(str2num(get(hh,String);set(hh,String,num2str(r);end(6).等号函数 这是整个程序中最重要的一个函数,申请全局变量 p,判断p 的值,并作出相应的处理。代码如下:)hh=;global v1;global 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);
10、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,string)set(hh,string,b)end(7))(8)菜单函数(以颜色中的粉红色为例)设置面板(tag 为 pane)的 background 属性。代码如
11、下:set,backgroundcolor,);set,backgroundcolor,);2、画图程序 (1).画图按钮函数(以二维曲线函数为例)代码如下:x=0:2*pi;,y=0:2*pi;y=sin(x);plot,x,y)(2).菜单函数 文件中的关闭函数,代码如下:function guanbi_Callback(hObject,eventdata,handles)close;三、遇到问题及解决方案)1、在计算器方面,刚做完时漏洞比较多,最严重的是小数点可以连续输入,很不方便。解决方法是:用 strfind 函数查看文本框里有几个小数点,如果已经有一个了,再按小数点就保持不变。另外
12、一个漏洞是按过运算符号后一个数不等于一个数,比如:输入 1,按等号,会出来一个 3,经过长时间分析得知,这是由于在按运算符号时,系统记录了文本框里的数但没有清空,才会出现这种问题。解决方法是再申请一个不同于加减乘除的另一个符号,并将按过运算符后记录的数值置 0,问题解决,很高兴。2、在画图程序中基本上没什么难度,就是有的图形不能在规定的坐标系中出现。解决方法,先获得坐标系的句柄,在画图,问题解决。三 程序运行结果 1、计算器程序 2、画图程序(1).初始界面 :(2).按二维曲线按钮后的界面 (3)按三维曲线按钮后的界面 (4)按三维曲面后的界面 (5).按三维网格按钮后的界面 (6)(7).
13、按柱形图按钮后的界面 (7).按饼图按钮后的界面 。【第 4 章 感想认识 经过不到一周的 matlab 课程设计使我感觉到,学习一学期的知识还是有些不连贯,造成编程时,没有思路,有不会的只好去网上查询,有时候会因为某个帖子是我茅塞顿开,从而有了思路,完成了课程设计的任务。Matlab Gui 是很有用的东西,比我们学的 C 语言界面好看,又有实用价值。以后我还要学习 matlab,为了迎接考试也是为了自己以后能够用到。-附录(源代码)一、计算器 function varargout=wodejisuanqi(varargin)gui_Singleton=1;gui_State=struct(
14、gui_Name,mfilename,.gui_Singleton,gui_Singleton,.gui_OpeningFcn,wodejisuanqi_OpeningFcn,.gui_OutputFcn,wodejisuanqi_OutputFcn,.gui_LayoutFcn,./gui_Callback,);if nargin&ischar(varargin1)=str2func(varargin1);end if nargout varargout1:nargout=gui_mainfcn(gui_State,varargin:);else&gui_mainfcn(gui_State,
15、varargin:);end%End initialization code-DO NOT EDIT%-Executes just before wodejisuanqi is made visible.function wodejisuanqi_OpeningFcn(hObject,eventdata,handles,varargin)global s;h=get,string);|switch(h)case+,-,*,s=1;otherwise s=0;end global p;p=;,=hObject;guidata(hObject,handles);%function varargou
16、t=wodejisuanqi_OutputFcn(hObject,eventdata,handles)varargout1=;%-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&i
17、sequal(get(hObject,BackgroundColor),get(0,defaultUicontrolBackgroundColor)set(hObject,BackgroundColor,white);end%-Executes on button press in point.function point_Callback(hObject,eventdata,handles)hh=;a=get(hh,string);set(hh,string,.);b=get(hh,string);c=strcat(a,b);!m=strfind(a,.);p,q=size(m);if q=
18、1 set(hh,string,a);else set(hh,string,c);end%-Executes on button press in zero.(function zero_Callback(hObject,eventdata,handles)global s;hh=;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);end end#%-Executes on butto
19、n press in one.function one_Callback(hObject,eventdata,handles)global s;hh=;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);¥end end%-Executes on button press in two.function two_Callback(hObject,eventdata,handles)glo
20、bal s;hh=;、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);end end%-Executes on button press in three.function three_Callback(hObject,eventdata,handles)。global s;hh=;if(s=1)set(hh,string,3);s=0;elseif(s=0)h=get(hh,stri
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- matlab 课程设计 源代码
限制150内