MATLAB_动画图、动态图制作

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
%by dynamic %see also http://www.matlabsky.com %2008.7.12
'on')
close all figure('toolbar','none','menubar','none','NumberTitle',... 'off','name','电影动画录制——Matlabsky'); axis equal m=moviein(20,gcf);%在当前窗口下,截取 20 帧 set(gca,'nextplot','replacechildren','box','off','color','b','xgrid',
%演示红色小球沿一条封闭旋螺线运动的实时动画
% 仅演示实时动画的调用格式为 anim_ball(K)
% 既演示实时动画又拍摄照片的调用格式为 f=anim_ball(K,ki)
% K 红球运动的循环数(不小于 1 )
% ki 指定拍摄照片的瞬间,取 1 到 1034 间的任意整数
% f 存储拍摄的照片数据,可用 image(f.cdata) 观察照片
但是由于 Matlab 本身的多线程编程缺陷(所谓多线程,就是 MATLAB 没法同时执行多 个回调,只能排队一个一个的按顺序运行,Timer 对象除外,它是 MATLAB 中唯一能够执 行多线程的方法),想要动态的画图,并且能够很好的在 GUI 中得到控制,还不是一件很容 易的事情。
但是动画具有生动形象直观的好处,对我的教学、研究等都有不小的作用。那好,我在 这里勉为其难的介绍下 Matlab 中是如何制作动画的。
2 动画的保存
3 有关动画制作的实验报告
4 更多动画实例
4.1 电影动画演示——旋转的山峰 4.2 擦除动画实例——卫星绕地球运动(注释很详细) 4.3 擦除动画实例——太阳|地球|月亮|卫星,绕转演示动画(注释很详细)
5 光学夫朗和费衍射现象模拟 MATLAB 源代码
6 牛顿环动画演示 MATLAB 源代码
MATLAB 中,创建电影动画的过程分为以下四步: step1:调用 moviein 函数对内存进行初始化(该步骤在 Matlab5.3 以上均可省略),创建 一个足够大的矩阵,使之能够容纳基于当前坐标轴大小的一系列指定的图形(此处称为帧)。 step2:调用 getframe 函数生成每个帧。该函数返回一个列矢量,利用这个矢量,就可 以创建一个电影动画矩阵。
while 1
if ~ishandle(h),return,end
set(h,'xdata',x(i),'ydata',y(i),'zdata',z(i));
drawnow;
pause(0.0005) %这里设置小球运动速度
i=i+1;
if nargin==2 & nargout==1
getframe 函数可以捕捉动画帧,并保存到矩阵中。一般将该函数放到 for 循环中得到一 系列的动画帧。该函数格式有:
(1)F=gefframe,从当前图形框中得到动画帧 (2)F=gefframe(h),从图形句柄 h 中得到动画帧 (3)F=getframe(h,rect),从图形句柄 h 的指定区域 rec 中得到动画帧 step3:调用 movie 函数按照指定的速度和次数运行该电影动画。 当创建了一系列的动画帧后,可以利用 movie 函数播放这些动画帧。该函数的主要格式 有: (1)movie(M),将矩阵 M 中的动画帧播放一次 (2)movie(M,n),将矩阵 M 中的动画帧播放 n 次 (3)movie(M,n,fps),将矩阵 M 中的动画帧以每秒 fps 帧的速度播放 n 次 step4:调用 movie2avi 函数可以将矩阵中的一系列动画帧转换成视频文件 avi 文件。这 样,即使脱离了 matlab 环境都可以播放动画。
该方法的经典格式是:
%录制电影动画 for j=1:n % %这里输入我们的绘图命令 % M(j) = getframe; end movie(M) %单帧显示方法 f = getframe(gcf); colormap(f.colormap); image(f.cdata);
1.1.1 电影动画演示实例(一)——千变万化的线条
MATLAB 技术论 坛
电子期刊
xiezhh
编辑:
制作: MATLAB 技术论坛
版权: MatlabSky©版权所有
网址: http://www.matlabsky. com
第 1 期 2010.09 No.1
中国权威 MATLAB 论坛核心期刊
MATLAB 技术论坛简介
目录
1 动画的制作
1.1 电影动画
7 使用 MATLAB 绘制原子轨道和电子云图形
8 振动摆 MATLAB 动画源代码
MATLAB 基础应用版块
Matlab 中动画的实现、制作和保存
http://www.matlabsky.com/thread-592-1-1.html
Matlab 的确是一个很优秀的工程计算软件,除了强大的矩阵运算,仿真分析外,绘图 功能也是相当的强大。
1 动画的制作
Matlab 中动画实现的方法主要有下面三种
1.1 电影动画
帖子地址:http://www.matlabsky.com/thread-593-1-1.html
从不同的视角拍下一系列对象的图形,并保存到变量中,然后按照一定的顺序像电影一 样播放。
电影动画的好处就是,运行一次可以多次播放,甚至可以直接生成 avi 文件,直接独立与 Matlab 环境播放。这是其它三种动画制作方法所不具备的。
background:在重新绘制图形对象之前。用背景色重绘对象来达到擦除原来图形对象的 目的。该模式会擦除任何对象和它下面的任何图形
Xor:在重新绘制图形对象之前,只擦除原来的对象,不会擦除其他对象或图形。这种 模式能产生图形对象移动的效果
step2:在循环语句中使用 set 更改图形的 xdata,ydata 和 zdata 等坐标数据 step3:使用 darwnow 命令刷新屏幕
bili = sin(pi*j/20); set(p,'XData',bili*XX,'YData',bili*YY,'ZData',bili*ZZ)
F(j) = getframe; end % 放映 10 次 movie(F,10)
1.2 擦除动画
帖子地址:http://www.matlabsky.com/thread-240-1-1.html
1.3 质点动画
1.3.1 质点动画演示(一) 1.3.2 质点动画演示(二)——平抛运动 1.3.3 质点动画演示(三)——导弹发射
1.4 霓虹灯效果动画
1.4.1 霓虹灯效果动画实例(一)—— 霓虹闪烁的球体 1.4.2 霓虹灯效果动画实例(二)—— 一颗花心
1.5 GIF 格式动画制作
1.5.1 GIF 格式动画制作案例——绕螺旋线运动的小球
% 产生封闭的运பைடு நூலகம்轨线
%
%
%by dynamic
%all rights reserved by http://www.4math.cn
%2007.10.26
%
t1=(0:1000)/1000*10*pi;
x1=cos(t1);y1=sin(t1);z1=-t1;
t2=(0:10)/10;
x2=x1(end)*(1-t2);y2=y1(end)*(1-t2);z2=z1(end)*ones(size(x2));
title('截图当前窗口的 20 帧动画') for j=1:20
plot(fft(eye(j+16))) m(:,j)=getframe(gcf); %截取动画帧,保存到 m 变量中 end hh=figure('toolbar','none','menubar','none','NumberTitle',... 'off','name','电影动画播放——Matlabsky'); title('将截取的动画播放 5 遍') set(gca,{'xtick','ytick','xticklabel','yticklabel'},{[],[],[],[]}) movie(hh,m,5)
该方法的经典格式是:
%擦除重绘模式动画 %选择一个擦除模式 set(h,'erasemode',erasemode)%h 是需要执行动画图像的句柄,一般都是由 line 或者 plot 创建 % %需要执行一些图形计算命令 % %循环语句中更新坐标数据,一般使用 for 或者 while for i=1:n
% %必要的 MATLAB 命令 % set(h,'xdata',xdata,'ydta',ydata)%更新图像的坐标数据 drownnow%刷新屏幕 % %其它 Matlab 语句 % end
1.2.1 Matlab 擦除重绘动画实例(一)——运动的小球
function f=anim_ball(K,ki) %
1.1.2 电影动画演示实例(二)——跳动的红心
帖子地址:http://www.matlabsky.com/viewthread.php?tid=9489
% by xiezhh x = linspace(-2,2,100); [X,Y,Z] = meshgrid(x,x,x); I1 = (X.^2+9/4*Y.^2+Z.^2-1).^3-X.^2.*Z.^3-9/80*Y.^2.*Z.^3; p = patch(isosurface(X,Y,Z,I1,0)); set(p, 'FaceColor', 'red', 'EdgeColor', 'none'); view(3); axis equal ; axis off; light('Posi',[0 -2 3]); % 在(0,-2,3)点处建立一个光源 lighting phong set(gca,'nextplot','replacechildren'); % 记录电影 XX = get(p,'XData'); YY = get(p,'YData'); ZZ = get(p,'ZData'); for j = 1:20
t3=t2;
z3=(1-t3)*z1(end);x3=zeros(size(z3));y3=x3;
t4=t2;
x4=t4;y4=zeros(size(x4));z4=y4;
x=[x1 x2 x3 x4];y=[y1 y2 y3 y4];z=[z1 z2 z3 z4];
h=figure('numbertitle','off','name',' 擦 除 动 画 演 示 ( 运 动 的 小 球 ) — —
1.1.1 电影动画演示实例(一)——千变万化的线条 1.1.2 电影动画演示实例(二)——跳动的红心
1.2 擦除动画
1.2.1 Matlab 擦除重绘动画实例(一)——运动的小球 1.2.2 Matlab 擦除重绘动画实例(二)——单摆横梁 1.2.3 Matlab 擦除重绘动画实例(三)——时钟演示 1.2.4 Matlab 擦除重绘动画实例(四)——小球绕跑道运动
Matlabsky')
plot3(x,y,z,'b')
axis off
%绘制红点
%擦除模式设为 xor
h=line('Color',[1
0
0],'Marker','.','MarkerSize',40,'EraseMode','xor');
n=length(x);
i=1;j=1;
%循环改变坐标,表现为小球运动
画在图形窗口中按照一定的算法连续擦除和重绘图形对象,表现为动画,这个也 是 MATLAB 中使用最多的方法。
使用 Matlab 的绘图函数不断重复绘制图形对象,重绘过程中递增式地改变图形对象位 置将产生动画效果。在重绘对象的过程中之所以能产生动画效果是由于对原来的图形对象进 行了擦除处理。
MATLAB 中,创建擦除重绘动画的过程分为以下三步: step1:设置重绘对象的擦除模式'EraseMode'模式 Matlab 的图形绘制函数允许采用不同的擦除模式来擦除原来的对象,不同的擦除模式 将产生不同的动画效果。擦除模式是通过没置“EraseMode”属性来完成的,一共有三种擦 除模式: none:重新绘制图形对象时不擦除原来的对象,这种模式可动态演示图形的生成过程, 如曲线和旋转曲砸的生成过程
相关文档
最新文档