MATLAB程序设计报告--基于MATLAB动画播放及音乐播放
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《MATLAB程序设计》课程设计报告
设计题目:基于MATLAB的动画演示
及背景音乐插入
专业:2011级通信工程
姓名(学号):储兆雄1162310213
邓少林1162310214
徐凯越1162310223
指导教师:倪建军(博士/副教授)
时间:2013年12月20日
目录
1、设计目的
2、总体设计
3、具体设计(功能实现)
4、结果分析
5、改进方向
6、心得体会
文献
附录
1、设计目的
学会运用matlab工具箱实现matlab GUI设计,处理动画运行,以及添加背景音乐,并实现其动态操作,如继续、暂停等功能。
2、总体设计
主要包括:动画模块,音乐模块,动画显示模块
3、具体设计(功能实现)
1) 动画模块
(1)打开动画文件:从文件打开对话框选择动画程序,实现动画播放的可选择性
程序实现代码如下:
function btnvopen_Callback(hObject, eventdata, handles)
% hObject handle to btnvopen (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global vfname %动画文件名
[vfname vpname vindex]=uigetfile('*.m','choose moive file');
len=length(vfname);
if vindex
set(handles.txtvname,'string',vfname(1:len-2))
end
打开对话框效果如下:
(2)开始动画播放:先获取文件名称vfname(1:len-2),然后用run()命令来执行
程序实现代码如下:
function btnvstart_Callback(hObject, eventdata, handles)
% hObject handle to btnvstart (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global vfname
try
len=length(vfname);
run(vfname(1:len-2));
catch
msgbox('sorry, there are some error while playing movie!','NOTICING');
end
以下是其中两个动画程序
snow动画
%***************设置背景****************************%
A=imread('H:\YOU.jpg');
h=figure;
imshow(A);
axes
axis([0 1 0 1]);
axis off;
set(gcf,'color','k');
N=20;
handles=zeros(1,N);
x=rand(2,N);
fontsize=floor(rand(1,N)*17+32);
new_handles_N=0;
%绘图
for i=1:N
handles(i)=text(x(1,i),x(2,i),'*','fontsize',fontsize(i),'color','w');
end
while 1
if ~ishandle(h)
return
end
for i=1:N
temp=get(handles(i),'position');
step=get(handles(i),'fontsize')/48*0.05;
if temp(2)<0
new_handles_N=new_handles_N+1;
new_handles(new_handles_N)= copyobj(handles(i),gca);
if new_handles_N==500
delete(new_handles);
new_handles_N=0;
end
temp(1)=rand(1);
temp(2)=1;
else
temp(1)=temp(1)+rand(1)*0.1-0.05;
temp(2)=temp(2)-step;
end
set(handles(i),'position',temp,'rotation',get(handles(i),'rotation')+5);
end
pause(.2)
end
简单程序动画
try
Movie=moviein(16);
for k=1:16
plot(fft(eye(k+16)))
axis equal
axis off
M(k)=getframe;
end
movie(M,30);
catch
msgbox('sorry, there are some error while playing movie!','NOTICING');