matlab_制作动画

上传人:n**** 文档编号:118694325 上传时间:2019-12-23 格式:PPT 页数:16 大小:55KB
返回 下载 相关 举报
matlab_制作动画_第1页
第1页 / 共16页
matlab_制作动画_第2页
第2页 / 共16页
matlab_制作动画_第3页
第3页 / 共16页
matlab_制作动画_第4页
第4页 / 共16页
matlab_制作动画_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《matlab_制作动画》由会员分享,可在线阅读,更多相关《matlab_制作动画(16页珍藏版)》请在金锄头文库上搜索。

1、Matlab 制作动画 1 涉及的主要问题 o一般步骤 o使用的主要函数及功能 o示例程序及运行结果 o存在的问题 2 一般步骤: o确定动画的帧数nframes o画出图形 o为nframes帧幅图形分配足够内存空间 o用getframe生成动画的数据矩阵 o以每秒n幅的速度播放动画 3 函数及功能 oM=moviein(nframes) n为nframes帧幅图分配足够内存空间 omovie(n) n以每秒n幅的速度播放动画 ogetframe n对当前的图象进行快照,截取一幅画面信息(称为动画中 的一帧),一幅画面信息形成一个很大的列向量 omeshgrid:用于产生x-y平面上的网格数

2、据 omesh:绘制网面图 4 函数及功能 oimwrite():将数据转换成图像文件 osurf:画立体曲面图 opeaks:生成一个凹凸有致的曲面 ofigure:创建一个数字图形图像 oaviobj = avifile(filename,PropertyName,value,.) nAVIFILE returns a handle to an AVI file object, aviobj. o mov = aviread(filename,index) reads the AVI movie filename into the MATLAB movie structure mov 5

3、保存动画生成avi格式的电影文件 o创建电影剪辑文件,并存储起来: naviobj=avifile(文件名.avi,fps,3);%定义一个avi文件, %AVIOBJ = AVIFILE(FILENAME,PropertyName,VALUE,Property Name,VALUE,.)%各属性详细说明见matlab帮助 nfor i=1:n %在当前窗体上生成一帧图像 frame=getframe(gca); %获得一帧图像 aviobj=addframe(aviobj,frame);%并加到电影剪辑文件中 end aviobj=close(aviobj);%关闭文件,结束数值仿真模拟过程

4、。 6 保存动画生成avi格式的电影文件 o直接利用函数movie2avi nmovie2avi(mov,filename.avi) nmov由getframe获得,生成文件名为filename.avi的视频文 件 o一般格式: for i=1:n figure(i) F(i)=getframe; end; movie2avi(F,.filename.avi) o 7 保存动画直接保存gif动画 o一般步骤: m(:,k)=getframe; %构造gif图像的帧, nn(:,:,:)=getframe; %转换为可以直接输出的格式 %如果要制作彩色的图像,你只能把生成的彩色图像单独 制作(使

5、用其他软件) nn1=nn.cdata; nn1=rgb2gray(nn1); imwrite(nn1,out.gif,gif,WriteMode,append) o 8 o画sinx,cosx图形 o二维动画 o三维动画 9 o画sinx,cosx图形 nx=0:0.5:360*pi/180;plot(x,sin(x),x,cos(x) o二维动画 x = -pi:pi/30:pi; h = plot(x,cos(x),o,MarkerEdgeColor,k,MarkerFaceColor,r, MarkerSize,8,EraseMode,Xor) for j = 1:3000 y = s

6、in(3*x+0.006*j); set(h,ydata,y); drawnow; end o 10 播放动画 o二维动画 s =0.2; x1=0; % 确定起始点横坐标x1及其增量 nframes = 50; % 确定动画总帧数 for k = 1:nframes x1= x1+s; % 确定画图时横坐标终止值x1 x =0:0.01:x1; y =sin(x); plot(x,y); % 在x=0 x1作y=sin(x)曲线 axis(0 2*pi -1 1) % 定义坐标轴范围 grid off % 不显示网格线 M(k) = getframe; % 将当前图形存入矩阵M(k) end

7、 movie(M,3) % 重复3次播放动画M 11 保存动画的示例1 o三维动画 x,y,z=peaks(30); %peaks产生一个凹凸有致的曲面 surf(x,y,z) %用X和Y定义x-y坐标网格,Z定义网格上每一点的高度,来生成三维曲 面 axis(-3 3 -3 3 -10 10) m=moviein(15); for i=1:15 view(-37.5+24*(i-1),30) m(:,i)=getframe; end movie(m) movie2avi(m,out.avi) o 12 保存动画的示例2 ofunction avimake owarning off; oloa

8、d data /data是已有的文件 oM,N,K=size(data); odata=data/(max(abs(data(:); oaviobj = avifile(mymovie.avi,fps,10); ofor kk=1:10:K o imagesc(data(:,:,kk); o set(gca,clim,-1 1); o colormap(hsv(128) o frame = getframe(gca); o aviobj = addframe(aviobj,frame); oend oaviobj = close(aviobj); 13 其它转换gif动画的方法 o直接作gif

9、动画的软件较多,比如Ulead GIF Animator,批量格式转换用XnView 14 其它动画示例程序 Z = peaks; surf(Z) axis tight set(gca,nextplot,replacechildren); for j = 1:50 surf(sin(2*pi*j/20)*Z,Z) F(j) = getframe; end movie(F,20) 15 其它动画示例程序 clear;clc; x,y=meshgrid(-8:.1:8); for j=1:20 f=(x,y)(sin(sqrt(11-j)*(x.2+y.2)./sqrt(11-j)*(x.2+y.2)+eps); z=f(x,y); surf(x,y,z);shading interp; M(j) = getframe; if j=1 I,map=rgb2ind(M(j).cdata,256); imwrite(I,map,out.gif,DelayTime,.1) else imwrite(rgb2ind(M(j).cdata,map),map,out.gif,WriteMode,append,Delay Time,.1) end end movie2avi(M,out.avi) 16

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号