《MATLAB与仿真系统课程设计》Word格式.docx
《《MATLAB与仿真系统课程设计》Word格式.docx》由会员分享,可在线阅读,更多相关《《MATLAB与仿真系统课程设计》Word格式.docx(31页珍藏版)》请在冰点文库上搜索。
另一种类型是当一个参数变化时,依次显示某些问题解的图形。
MATLAB中的函数moviein,getframe和movie提供了捕捉和播放动画的所需工具。
函数moviein可以产生一个帧矩阵来存放动画中的帧;
函数getframe对当前的图像进行快照;
而函数movie按顺序回放各帧。
照这样,捕捉和回放动画的方法是:
(1)创建帧矩阵;
(2)对动画中的每一帧生成图形,并把它捕捉到到帧矩阵里;
(3)从帧矩阵里回放动画。
1、结合本身所学知识以及课程设计要求,确立自我方案的整体设计
整体设计一个可视化模块,该模块分图像显示模块和动画播放模块。
图像显示模块主要是用来显示磁盘目录下的某个图片;
动画播放模块主要是用来播放动画。
2、对整体方案进行划分,分模块对各个小问题进行解决
i.图片显示模块:
在MATLAB中键入所需代码,使其能够调用磁盘目录下的图片文档;
ii.动画播放模块:
在MATLAB中键入所需代码,使其能够播放动画;
iii.GUI的设计:
建立一个GUI的模板,使其能都搭载图片显示模块和动画播放模块。
3、对各个模块进行整合,使其工作
三、课程设计的内容与安排
通过编程显示磁盘目录下的图像文件,对GUI中的CALLBACK进行编程,使其能够完成调用图片这一功能;
编程实现不断变化的图形,该图为自己绘制,且观赏价值高。
时间安排参考如下教学时间安排
教学安排
周一布置任务,查阅资料
周二设计
周三设计
周四仿真、调试
周五验收、总结报告
四、课程设计的步骤
1、图片显示模块的设计。
图片显示模块是为了在MATLAB中显示本地磁盘中的图片文档而建立的一个模块
打开MATLAB程序,在弹出的“commandwindow”窗口中键入以下代码:
%=======================照片读取=================================
[x,cmap]=imread('
E:
\picture\走走走\100815\DSC00285.JPG'
);
image(x);
colormap(cmap);
axisimageoff
该段代码调用的是本地磁盘E:
\picture\走走走\100815\目录的下DSC00285.JPG图片文档
2、动画播放模块的设计
动画播放模块是为了在MATLAB环境下绘制和播放动画而建立的一个模块
打开MATLAB编辑器,在空白处键入以下代码:
(1).布朗运动的代码
%=====================布朗运动==================================
n=50;
%指定布朗运动的点数
s=0.02;
%指定温度或速率
%产生n个随机点(x,y),处于-0.5到0.5之间
%==================================
x=rand(n,1)-0.5;
y=rand(n,1)-0.5;
h=plot(x,y,'
.'
%绘制随机点
axis([-11-11]);
axissquare
shadinginterp
gridoff
set(h,'
EraseMode'
'
Xor'
MarkerSize'
20);
%设置擦除模式为Xor
%循环5000次,产生动画效果
fori=linspace(1,10,5000)
drawnow
x=x+s*randn(n,1);
%在坐标点附近添加随机噪声
y=y+s*randn(n,1);
set(h,'
XData'
x,'
YData'
y);
%通过改变数据属性来重新绘图
end
(2).球体运动动画的代码
%==============================小球运动========================
fill([6,7,7,6],[5,5,0,0],[0,0.5,0]);
%右边竖条的填充
holdon;
%保持当前图形及轴系的所有特性
fill([2,6,6,2],[3,3,0,0],[0,0.5,0]);
%左边竖条的填充
%保持当前图形及轴系的所有特性
t1=0:
pi/60:
pi;
plot(4-2*sin(t1-pi/2),5-2*cos(t1-pi/2));
%绘制中间的凹弧图形
grid;
%添加网格线
axis([0,9,0,9]);
%定义坐标轴的比例
axis('
off'
%关闭所有轴标注,标记,背景
fill([1,2,2,1],[5,5,0,0],[0,0.5,0]);
%中间长方形的填充
title('
Sphere'
%定义图题
x0=6;
y0=5;
head1=line(x0,y0,'
color'
b'
linestyle'
...
'
erasemode'
xor'
markersize'
30);
head2=line(x0,y0,'
50);
%设置小球颜色,大小,线条的擦拭方式
t=0;
%设置小球的初始值
dt=0.001;
%设置运动周期
t1=0;
%设置大球的初始值
dt1=0.001;
while1%条件表达式
t=t+dt;
x1=9-1*t;
y1=5;
x3=6;
y3=5;
ift>
x2=6;
y2=5;
%设置小球的运动轨迹
end
2.8
a=sin(t-3);
x1=6.1;
y1=5.1;
x3=4-2*sin(1.5*a);
y3=5-2*cos(1.5*a);
%设置大球的运动轨迹
set(head1,'
xdata'
x1,'
ydata'
y1);
%设置球的运动
set(head2,'
x3,'
y3);
drawnow;
endguide
3、GUI的设计
建立一个GUI的模板,使其能都搭载图片显示模块和动画播放模块
(1)打开MATLAB软件,在弹出的“commandwindow”中键入:
guide回车,弹出如图1:
图1.GUI设计启动窗口
(2)选择“BlankGUI(Default)”点击“OK”按钮进入GUI编辑窗口,如图2:
图2.GUI编辑窗口
(3)添加组件。
组件名称
数量
String
Tag
FrontSize
axes
pushbutton
1
4
——
Brownian
Sphere
Picture
Quit
axes1
BT_Brownian
BT_Sphere
BT_PictureShow
BT_Quit
10.0
表1.组件列表及部分属性设置
图3.组件的摆放
在GUI界面内添加组件如图3所示,在修改完部分属性以后界面如图5所示,修改界面如图4所示。
图4.属性编辑栏
图5.属性修改完后的GUI界面
(4)菜单栏的设置(这里不添加默认的菜单栏,即GUI界面的MenuBar属性设置为none)
图6.菜单栏的编辑
为菜单栏添加组件组件清单如表2所示,组件添加如图7所示
图7.菜单栏的修改
名称
Label
Accelerator
NewMen
NewMenuItemu
6
File
BackColor
Help
Abou
PictureShow
Exit
Yellow
Red
NM_File
NM_BackColor
NM_Help
NM_AboutNMI_Brownian
NMI_Sphere
NMI_PictureShow
NMI_Exit
NMI_Yellow
NMI_Red
--
--
Ctrl+B
Ctrl+S
Ctrl+P
Ctrl+E
表2.菜单栏的部分属性设置
(5)其余设置
GUI界面的Tag属性设为“CourseExercise”中文意思为“课程设计”
4、代码的添加以及模块的组合封装
按钮Quit功能实现:
%---ExecutesonbuttonpressinBT_Quit.
functionBT_Quit_Callback(hObject,eventdata,handles)
%hObjecthandletoBT_Quit(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
%<
BT_Quit>
=================================================================
close(gcf)
/BT_Quit>
================================================================
注:
个人习惯在自己添加的代码处添加注释头文件%<
>
========尾文件%<
/>
========
按钮Brownian功能实现:
%---ExecutesonbuttonpressinBT_Brownian.
functionBT_Brownian_Callback(hObject,eventdata,handles)
%hObjecthandletoBT_Brownian(seeGCBO)
BT_Brownian>
=============================================================
%=====================布朗运动==================================
/BT_Brownian>
============================================================
按键Sphere功能实现:
%---ExecutesonbuttonpressinBT_Sphere.
functionBT_Sphere_Callback(hObject,eventdata,handles)
%hObjecthandletoBT_Sphere(seeGCBO)
BT_Sphere>
===============================================================
end
/BT_Sphere>
==============================================================
按钮PictureShow功能实现:
%---ExecutesonbuttonpressinBT_PictureShow.
functionBT_PictureShow_Callback(hObject,eventdata,handles)
%hObjecthandletoBT_PictureShow(seeGCBO)
BT_PictureShow>
==========================================================
%=======================照片读取=================================
/BT_PictureShow>
=========================================================
颜色的实现:
%--------------------------------------------------------------------
functionNMI_Red_Callback(hObject,eventdata,handles)
%hObjecthandletoNMI_Red(seeGCBO)
%=========================================
set(handles.CourseExercise,'
r'
%背景色为红色
functionUntitled_3_Callback(hObject,eventdata,handles)
%hObjecthandletoUntitled_3(seeGCBO)
functionNMI_Yellow_Callback(hObject,eventdata,handles)
%hObjecthandletoNMI_Yellow(seeGCBO)
y'
%背景色为黄色
五、课程设计的结果
程序所有代码为:
functionvarargout=CourseExercise(varargin)
%COURSEEXERCISEM-fileforCourseExercise.fig
%COURSEEXERCISE,byitself,createsanewCOURSEEXERCISEorraisestheexisting
%singleton*.
%
%H=COURSEEXERCISEreturnsthehandletoanewCOURSEEXERCISEorthehandleto
%theexistingsingleton*.
%COURSEEXERCISE('
CALLBACK'
hObject,eventData,handles,...)callsthelocal
%functionnamedCALLBACKinCOURSEEXERCISE.Mwiththegiveninputarguments.
Property'
Value'
...)createsanewCOURSEEXERCISEorraisesthe
%existingsingleton*.Startingfromtheleft,propertyvaluepairsare
%appliedtotheGUIbeforeCourseExercise_OpeningFunctiongetscalled.An
%unrecognizedpropertynameorinvalidvaluemakesproperty