matlab课程设计含源代码Word文档格式.docx

上传人:b****5 文档编号:19253047 上传时间:2023-01-04 格式:DOCX 页数:26 大小:249.20KB
下载 相关 举报
matlab课程设计含源代码Word文档格式.docx_第1页
第1页 / 共26页
matlab课程设计含源代码Word文档格式.docx_第2页
第2页 / 共26页
matlab课程设计含源代码Word文档格式.docx_第3页
第3页 / 共26页
matlab课程设计含源代码Word文档格式.docx_第4页
第4页 / 共26页
matlab课程设计含源代码Word文档格式.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

matlab课程设计含源代码Word文档格式.docx

《matlab课程设计含源代码Word文档格式.docx》由会员分享,可在线阅读,更多相关《matlab课程设计含源代码Word文档格式.docx(26页珍藏版)》请在冰豆网上搜索。

matlab课程设计含源代码Word文档格式.docx

加、减、乘、除、乘方、开方;

可以后退、清零;

可以更换背景颜色、查看帮助等操作。

(2).画图程序能实现的功能

可以画出二维曲线、三维曲线、三维网格、三维曲面、柱状图、饼图;

有简单菜单(就包括一项:

文件)。

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.画图

(2).新建Gui文件并命名为“huatu.fig”;

(3).再出现的界面创建需要的坐标系(tag为zuobiaoxi),按钮:

二维曲线、三位曲线、三维网格、三维曲面、柱状图、饼状图;

(4).将它们的tag都设为它们的汉语拼音;

(5).编写M文件。

第3章编码

1、代码编写步骤

1、计算器

(1).主函数

在主函数fanctionwodejisuanqi-OpeningFcn中编写主函数代码。

先申请一个全局变量s,用于判断文本框里的字符串是不是有:

,如果有的话,就把s置为1,否则,置为0。

再获得文本框中字符串的句柄,并赋给变量h。

申请全局变量p,为了判断响应等号时文本框里的运算符号,其中令p='

\'

是没有实际意义的,只是为了判断运算符不是加减乘除中的任一个。

代码如下:

globals;

h=get(handles.wenben,'

string'

);

switch(h)

case{'

'

}

s=1;

otherwise

s=0;

end

globalp;

p='

;

(2).数字函数

在这个函数里主要是判断文本框里是不是有加减乘除符号,如果有的话,就把文本框中的字符串设置为数字,否则,再判断是不是0,是的话,就把文本框中的值置为数字,不是的话,就把数字连接到文本框中的字符串上。

代码如下(以0为例):

globals;

hh=handles.wenben;

%把文本框的句柄赋给hh

if(s==1)

set(hh,'

0'

%把s再次置为0,为了下次判断不出错

elseif(s==0)

h=get(hh,'

switch(h)%在判断h是否为0

case'

t=strcat(h,'

%把0连接到原有的字符后面

t);

end

(3).小数点函数

判断原来文本框里有几个小数点,如果有的话,就保持不变,否则,加上小数点。

判断方法是用strfind函数,测试其返回的矩阵大小。

hh=handles.wenben;

a=get(hh,'

b=get(hh,'

c=strcat(a,'

[p,q]=size(m);

%测试矩阵m

ifq>

=1

a);

else

c);

(4)运算符号(以加号为例)函数

申请全局变量p,s,v1,p用于响应等号时判断,s用于判断按加好时文本框里是不是有加减乘除,如果没有就把文本框里的字符串转换成数字,并赋给全局变量v1。

if(s==0)

globalv1;

%按加号之前的数值

v1=str2num(get(hh,'

));

(5).根号和幂(以根号为例)函数

申请全局变量s,如果s=0,即文本框里没有加减乘除符号,就把文本框里的字符串转换成数字并开方。

if(s==0)

r=sqrt(str2num(get(hh,'

String'

)));

set(hh,'

num2str(r));

(6).等号函数

这是整个程序中最重要的一个函数,申请全局变量p,判断p的值,并作出相应的处理。

globalv1;

globalv2;

globalv3;

globalv4;

globalv5;

globalv6;

v5=str2num(get(hh,'

switch(p)

case'

r=v1+v5

v1=0;

p='

'

r=v2-v5;

v2=0;

r=v3*v5;

v3=0;

/'

r=v4/v5;

v4=0;

^'

r=v6^v5;

v5=0;

otherwise

b=(get(hh,'

))

b)

(7)菜单函数(以颜色中的粉红色为例)

设置面板(tag为pane)的background属性。

set(handles.pane,'

backgroundcolor'

[0.9920.510.627]);

set(handles.biaoti,'

2、画图程序

(1).画图按钮函数(以二维曲线函数为例)

x=[0:

0.1:

2*pi];

y=[0:

y=sin(x);

plot(handles.zuobiao,x,y)

(2).菜单函数

文件中的关闭函数,代码如下:

functionguanbi_Callback(hObject,eventdata,handles)

close;

2、遇到问题及解决方案

1、在计算器方面,刚做完时漏洞比较多,最严重的是小数点可以连续输入,很不方便。

解决方法是:

用strfind函数查看文本框里有几个小数点,如果已经有一个了,再按小数点就保持不变。

另外一个漏洞是按过运算符号后一个数不等于一个数,比如:

输入1,按等号,会出来一个3,经过长时间分析得知,这是由于在按运算符号时,系统记录了文本框里的数但没有清空,才会出现这种问题。

解决方法是再申请一个不同于加减乘除的另一个符号,并将按过运算符后记录的数值置0,问题解决,很高兴。

2、在画图程序中基本上没什么难度,就是有的图形不能在规定的坐标系中出现。

解决方法,先获得坐标系的句柄,在画图,问题解决。

三程序运行结果

1、计算器程序

(1).初始界面

(2).按二维曲线按钮后的界面

(3)按三维曲线按钮后的界面

(4)按三维曲面后的界面

(5).按三维网格按钮后的界面

(6).按柱形图按钮后的界面

(7).按饼图按钮后的界面

第4章感想认识

经过不到一周的matlab课程设计使我感觉到,学习一学期的知识还是有些不连贯,造成编程时,没有思路,有不会的只好去网上查询,有时候会因为某个帖子是我茅塞顿开,从而有了思路,完成了课程设计的任务。

MatlabGui是很有用的东西,比我们学的C语言界面好看,又有实用价值。

以后我还要学习matlab,为了迎接考试也是为了自己以后能够用到。

附录(源代码)

functionvarargout=wodejisuanqi(varargin)

gui_Singleton=1;

gui_State=struct('

gui_Name'

mfilename,...

gui_Singleton'

gui_Singleton,...

gui_OpeningFcn'

@wodejisuanqi_OpeningFcn,...

gui_OutputFcn'

@wodejisuanqi_OutputFcn,...

gui_LayoutFcn'

[],...

gui_Callback'

[]);

ifnargin&

&

ischar(varargin{1})

gui_State.gui_Callback=str2func(varargin{1});

ifnargout

[varargout{1:

nargout}]=gui_mainfcn(gui_State,varargin{:

});

else

gui_mainfcn(gui_State,varargin{:

%Endinitializationcode-DONOTEDIT

%---Executesjustbeforewodejisuanqiismadevisible.

functionwodejisuanqi_OpeningFcn(hObject,eventdata,handles,varargin)

handles.output=hObject;

guidata(hObject,handles);

%

functionvarargout=wodejisuanqi_OutputFcn(hObject,eventdata,handles)

varargout{1}=handles.output;

%---Outputsfromthisfunctionarereturnedtothecommandline.

functionwenben_Callback(hObject,eventdata,handles)

%---Executesduringobjectcreation,aftersettingallproperties.

functionwenben_CreateFcn(hObject,eventdata,handles)

ifispc&

isequal(get(hObject,'

BackgroundColor'

),get(0,'

defaultUicontrolBackgroundColor'

set(hObject,'

white'

%---Executesonbuttonpressinpoint.

functionpoint_Callback(hObject,eventdata,handles)

a=get(hh,'

b=get(hh,'

c=strcat(a,b);

m=strfind(a,'

[p,q]=size(m);

ifq>

%---Executesonbuttonpressinzero.

functionzero_Callback(hObject,eventdata,handles)

switch(h)

%---Executesonbuttonpressinone.

functionone_Callback(hObject,eventdata,handles)

1'

%---Executesonbuttonpressintwo.

functiontwo_Callback(hObject,eventdata,handles)

2'

%---Executesonbuttonpressinthree.

functionthree_Callback(hObject,eventdata,handles)

3'

%---Executesonbuttonpressinfour.

functionfour_Callback(hObject,eventdata,handles)

4'

%---Executesonbuttonpressinfive.

functionfive_Callback(hObject,eventdata,handles)

5'

%---Executesonbuttonpressinsix.

functionsix_Callback(hObject,eventdata,handles)

6'

%---Executesonbuttonpressinseven.

functionseven_Callback(hObject,eventdata,handles)

7'

%---Executesonbuttonpressineight.

functioneight_Callback(hObject,eventdata,handles)

8'

%---Executesonbuttonpressinnine.

functionnine_Callback(hObject,eventdata,handles)

9'

%--------------------------------------------------------------------

functionwenjian_Callback(hObject,eventdata,handles)

functionqianlvse_Callback(hObject,eventdata,handles)

[0.60.9020.608]);

functionbeijingse_Callback(hObject,eventdata,handles)

%----------------------------------------------

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

当前位置:首页 > 人文社科 > 哲学历史

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

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