MATLAB界面设计报告

MATLAB界面设计报告本文简介:《MATLAB课程设计》报告设计题目:可视化界面学生姓名:何庆宇学生学号:2009045444023专业班级:09级通信工程(师范)答辩时间:指导教师:冯明库广东技术师范学院电子与信息学院一、设计目的及意义学会综合地运用MATLAB工具箱设计出可以绘制一般常见图像的GUI程序。同时,加深对MATLA
MATLAB界面设计报告本文内容:
《MATLAB课程设计》报告
设计题目:
可视化界面
学生姓名:
何庆宇
学生学号:
2009045444023
专业班级:
09级通信工程(师范)
答辩时间:
指导教师:
冯明库
广东技术师范学院
电子与信息学院
一、设计目的及意义
学会综合地运用MATLAB工具箱设计出可以绘制一般常见图像的GUI程序。同时,加深对MATLAB的绘制图像功能的认识和设计GUI程序的一般方法的掌握。
二、设计任务及指标
设计一个GUI界面程序,可以根据不同参数的输入来绘制不同的螺旋线、内摆线以及圆环图像。
熟悉和掌握MATLAB
程序设计方法;掌握MATLAB
GUI
程序设计;学习和熟悉MATLAB工具箱;学会运用MATLAB工具箱绘制常见图像。
三、设计过程
首先,启动Matlab并进入GUIDE环境:在Command
Window下输入“guide”,进入GUIDE环境。然后在用户界面编辑窗口添加4个命令按钮(显示是OK的用个PUSH
BUTTON),再如下图所示添加5个静态文本框(Static
Text)、5个编辑文本框(Edit
Text)和一个坐标系(Axes)。
其次,按下表设置每个控件的属性值(具体操作是:双击鼠标左键要设置属性的控件——property
inspector
命令——在弹出的属性窗口中找到相应的属性名称——将该属性的值修改成自己需要的值)。
各控件属性修改值(表1—1)
控件名
属性
属性修改值
PushButton1
FontSize
16
String
螺旋线
Tag
pushbuttonLxx
PushButton2
FontSize
16
String
内摆线
Tag
pushbuttonNBX
PushButton3
FontSize
16
String
圆旋转成圆环
Tag
pushbuttonCtoC
PushButton4
FontSize
16
String
退出
Tag
pushbuttonExit
Static
Text1
String
大圆半径
Static
Text2
String
小圆半径
Static
Text3
String
修正值
Static
Text4
String
圆半径
Static
Text5
String
离转轴的距离
Edit
Text1
String
空或设置成一个适定值,如10
Tag
editBCR
Edit
Text2
String
空或设置成一个适定值,如2
Tag
editSCR
Edit
Text3
String
空或设置成一个适定值,如1
Tag
editXZZ
Edit
Text4
String
空或设置成一个适定值,如4
Tag
editCR
Edit
Text5
String
空或设置成一个适定值,如10
Tag
editBExit
注:上面控件名称的编号,比如1,2之类,在界面上是没有的,只是我按照从上到下的次序,为方便叙述而编写的。最后,添加代码(在添加代码前,最好先将文件保存一下,比如以Exp8为文件名保存),添加程序代码的常用方法是:单击M-file
Editor(如图:)。
下面真正添加自己的程序,最后成的程序如下:自己添加的程序用红色表示。
function
varargout
=
Exp8(varargin)
gui_Singleton
=
1;
gui_State
=
struct(
gui_Name,mfilename,.
gui_Singleton,gui_Singleton,.
gui_OpeningFcn,@Exp8_OpeningFcn,.
gui_OutputFcn,@Exp8_OutputFcn,.
gui_LayoutFcn,[],.
gui_Callback,[]);
if
nargin
end
if
nargout
[varargout{1:nargout}]
=
gui_mainfcn(gui_State,varargin{:});
else
gui_mainfcn(gui_State,varargin{:});
end
%上面的是系统初始化代码,绝对不要去修改它们。
function
Exp8_OpeningFcn(hObject,eventdata,handles,varargin)
handles.output
=
hObject;
guidata(hObject,handles);
%这里选择了一个图片文件,作为初始画面,具体的图片可以选择自己喜欢的。
map1=imread(
Water
lilies.jpg
);
image(map1)
%上面的代码,告诉我们,一般的用户界面的自己设置的初始化状态应添加在这个函数内。
function
varargout
=
Exp8_OutputFcn(hObject,eventdata,handles)
varargout{1}
=
handles.output;
%上面的函数返回的量直接到命令窗口。
function
pushbuttonLxx_Callback(hObject,eventdata,handles)
%上面的函数是点击螺旋线按钮时,执行的代码,即可以在此处添加有关螺旋线的程序代码。
axes(handles.axes1)
cla
v=2;
alf=pi/6;
omg=pi/5;
t=0:0.01:100;
x=v*sin(alf).*cos(omg*t).*t;
y=v*sin(alf).*sin(omg*t).*t;
z=v*cos(alf).*t;
%plot3(x,y,z)
axis([-100
100
-100
100
0
160])
grid
on
axis
equal
on
comet3(x,y,z)
%上面的程序是“一质点,沿着已知圆锥面的一条直母线自圆锥的顶点起,作等速直线运动,另一方面这一条母线在圆锥面上,过圆锥的顶点绕圆锥的轴(旋转轴)作等速的转动,这时质点在圆锥面上的轨迹”的动态形成过程。
function
pushbuttonNBX_Callback(hObject,eventdata,handles)
%上面的函数是点击内摆线按钮时,执行的代码,即可以在此处添加有关内摆线的程序代码。
axes(handles.axes1)
cla
a=str2double(get(handles.editBCR,String
));
b=str2double(get(handles.editSCR,String
));
k=str2double(get(handles.editXZZ,String
));
axis([-a-2
a+2
-a-2
a+2
0
a+2])
line([-a-2,a+2],[0,0]);
hold
on
line([0,0],[-a-2,a+2]);
u=0:pi/30:2*pi;
x=a*cos(u);
y=a*sin(u);
plot(x,y)
x=b*cos(u)+a-b;
y=b*sin(u);
plot(x,y)
axis
equal
on
grid
on
theta=0:pi/1800:k*a*pi;
x=(a-b)*cos(b/a*theta)+b*cos((a-b)/a*theta);
y=(a-b)*sin(b/a*theta)-b*sin((a-b)/a*theta);
comet(x,y)
%上面的程序是内摆线的动态的形成过程
%
---
cutes
on
button
press
in
pushbuttonExit.
function
pushbuttonExit_Callback(hObject,eventdata,handles)
%上面的函数是点击退出按钮时,执行的代码,即可以在此处添加退出时的程序代码。
ss=questdlg(
你真的要退出吗?,退出信息窗口!,不,我还想看看!,是的,我要退出!,是的,我要退出!
);
switch
ss
case
是的,我要退出!
delete(handles.figure1);
end
%上面的程序是退出程序时信息窗口
function
editBCR_Callback(hObject,eventdata,handles)
%上面的函数是
editBCR这个编辑文本按钮回调时,执行的代码。
function
editBCR_CreateFcn(hObject,eventdata,handles)
if
ispc
set(hObject,BackgroundColor,white
);
else
set(hObject,BackgroundColor,get(0,defaultUicontrolBackgroundColor
));
end
%上面的函数用来在程序中设置editBCR的属性值。
function
editSCR_Callback(hObject,eventdata,handles)
%上面的函数是editSCR这个编辑文本按钮回调时,执行的代码。
function
editSCR_CreateFcn(hObject,eventdata,handles)
if
ispc
set(hObject,BackgroundColor,white
);
else
set(hObject,BackgroundColor,get(0,defaultUicontrolBackgroundColor
));
end
%上面的函数用来在程序中设置editSCR的属性值。
function
editXZZ_Callback(hObject,eventdata,handles)
%上面的函数是editXZZ这个编辑文本按钮回调时,执行的代码。
function
editXZZ_CreateFcn(hObject,eventdata,handles)
if
ispc
set(hObject,BackgroundColor,white
);
else
set(hObject,BackgroundColor,get(0,defaultUicontrolBackgroundColor
));
end
%上面的函数用来在程序中设置editXZZ的属性值。
function
pushbuttonCtoC_Callback(hObject,eventdata,handles)
%上面的函数是点击圆旋转成圆环按钮时,执行的代码,即可以在此处添加圆旋转成圆环时的程序代码。
axes(handles.axes1)
cla
%a=4;
%b=10;
a=str2double(get(handles.editCR,String
));
b=str2double(get(handles.editDist,String
));
u=0:pi/30:2*pi;
y=a.*cos(u)+b;
z=a.*sin(u);
n=length(u);
x=0*ones(1,n);
if
a
axis([-b-2
b+2
-b-2
b+2
-a-2
a+2])
else
axis([-a-2
a+2
-a-2
a+2
-b-2
b+2])
end
plot3(x,y,z)
pause(1)
for
t=0:pi/60:2*pi
x=y.*sin(t);
y1=y.*cos(t);
plot3(x,y1,z)
pause(0.1)
grid
on
hold
on
%axis
equal
on
%view([-20,0])
end
%上面的程序是圆旋转成圆环的动态的形成过程
function
editCR_Callback(hObject,eventdata,handles)
%上面的函数是editCR这个编辑文本按钮回调时,执行的代码。
function
editCR_CreateFcn(hObject,eventdata,handles)
if
ispc
set(hObject,BackgroundColor,white
);
else
set(hObject,BackgroundColor,get(0,defaultUicontrolBackgroundColor
));
end
%上面的函数用来在程序中设置editCR的属性值。
function
editDist_Callback(hObject,eventdata,handles)
function
editDist_CreateFcn(hObject,eventdata,handles)
if
ispc
set(hObject,BackgroundColor,white
);
else
set(hObject,BackgroundColor,get(0,defaultUicontrolBackgroundColor
));
end
%上面的函数用来在程序中设置editDist的属性值。
添加代码完毕后,点击保存程序代码,再单击Run(如图:)运行已经完成的程序,即可得到我们所想要的效果了。
最后,如果还想要在界面添加背景颜色,那么还可以添加Select菜单项。
首先将图形窗口的MenuBar属性设为figure,然后打开菜单编辑器,新建一个菜单项,它的Lebel属性设为Select,再在刚建的Select菜单项下建立子菜单项,其Lebel属性设为Yellow,把Callback属性设为set(gcf,’Color’,’y’)。同理,再为Select建立一个子菜单项,其Label属性和Callback属性分别设为Red和set(gcf,’Color’,’r’)。这时候再运行程序就可以了。
四、结论及分析
当程序运行成功后会出现以下界面:
主画面(图一)
当分别点击按钮“螺旋线”、“内摆线”、“圆旋转成圆环”和“退出”命令按钮时,分别出现如下列图示的动态、静态的结果:
螺旋线图(图二)
内摆线图(图三)
退出信息图(图四)
注意:你所选图片格式与图片名字要与读入图片文件的格式与文字要一致。比如在本程序设计中,添加图片的代码如下:
map1=imread(
Water
lilies.jpg
);
image(map1)
这时图片的格式为jpg,名字为Water
lilies。同时,选用的图片应该把它放在与其它文件一起的同一个文件夹里。
五、设计体会
MATLAB不仅具有强大的数值运算和符号计算功能,同时还具有非常强大的二维和三维绘图功能,尤其擅长于各种科学运算结果的可视化界面的展示。计算的可视化可以将杂乱的数据通过图形表示来从中观察出其内在的关系。
由于某些版本的MATLAB可能与电脑不兼容,所以在安装MATLAB时应该注意设置好电脑对此软件的兼容性。
由于MATLAB函数众多,而且课本上提供的都是最基本的函数功能,自己不仅要去图书馆借这方面的专业书籍来阅读,而且许多函数的编写都要用到C
语言,对C语言也有一定的要求。
通过本次课程设计,使自己对MATLAB
GUI设计流程有了比较深刻的体会,同时也了解了一般软件设计的过程。在设计过程中碰到了很多的问题,通过这些问题,使自己分析问题,解决问题的能力得到了较大的提高。
参考文献:
[1]刘卫国主编.MATLAB程序设计与应用(第二版).高等教育出版社,2006.7.
[2]陈杰等编著.MATLAB宝典.电子工业出版社,2010.
[3]蒋珉编著.MATLAB程序设计及应用.北京邮电大学出版社,2010.
[4]张学敏编著.MATLAB基础及应用.中国电力出版社,2009.
[5]张德丰编著.MATLAB程序设计与典型应用.电子工业出版社,2009.
程序清单:
正文字体为宋体,小四号,1.5倍行间距
一级标题为黑体,三号,段前段后各空一行,如
“三、设计过程”
二级标题为黑体,小三号,段前段后各空半行,如
“3.1
设计主界面介绍”
三级标题为黑体,四号,段前段后各空半行,如
“3.1.1
Help菜单设计”
图要有图号图名,标注在图的正下方,居中对齐,宋体,五号
表要有表序表名,标注在表的正上方,居中对齐,表格左右不加边线,宋体,五号
