描绘记忆 发表于 2011-4-27 07:28

matlab动画

电影动画的好处就是,运行一次可以多次播放,甚至可以直接生成avi文件,直接独立与Matlab环境播放。这是其它三种动画制作方法所不具备的。

MATLAB中,创建电影动画的过程分为以下四步:

step1:调用moviein函数对内存进行初始化(该步骤在Matlab5.3以上均可省略),创建一个足够大的矩阵,使之能够容纳基于当前坐标轴大小的一系列指定的图形(此处称为帧)。

step2:调用getframe函数生成每个帧。该函数返回一个列矢量,利用这个矢量,就可以创建一个电影动画矩阵。

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);

复制代码
此外,利用immovie函数,我们可以从多帧图像阵列中创建MATALB 电影动画。




2:请教如何保存matlab的动画?

function avimake
warning off;
load data
=size(data);
data=data/(max(abs(data(:))));
aviobj = avifile('mymovie.avi','fps',10);
for kk=1:10:K   
    imagesc(data(:,:,kk));   
    set(gca,'clim',[-1 1]);
    colormap(hsv(128))   
    frame = getframe(gca);
    aviobj = addframe(aviobj,frame);
end
aviobj = close(aviobj);


3:直接保存gif动画
m(:,k)=getframe;
    %%%构造gif图像的帧,
    nn(:,:,:)=getframe;
    %%转换为可以直接输出的格式(这会是图像丢失)
    %如果要制作彩色的图像,你只能把生成的彩色图像单独制作(使用其他软件)
    nn1=nn.cdata;
    nn1=rgb2gray(nn1);
    imwrite(nn1,'out.gif','gif','WriteMode','append')

亚特兰蒂斯 发表于 2011-4-27 07:32

厉害,这个matlaB真是很强大,可扩展性能这么广泛

李贤 发表于 2011-5-26 17:56

厉害,这个matlaB真是很强大,可扩展性能这么广泛

黄家的大哥哥 发表于 2011-5-26 18:22

so diffidult!

描绘记忆 发表于 2011-7-10 15:25

还好吧,是你没有做那个,其实很简单的。

chenxs008 发表于 2011-8-13 11:01

程序中的{:soso_e100:}是什么意思啊

蜗牛天使 发表于 2011-8-27 16:55

进来学习一下

豪蛋 发表于 2011-9-20 23:52

厉害;谢谢楼主

286752439 发表于 2011-9-26 19:46

{:3_48:}{:3_48:}{:3_48:}

286752439 发表于 2011-9-26 19:46

{:3_48:}{:3_48:}{:3_48:}
页: [1] 2 3 4
查看完整版本: matlab动画