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')
厉害,这个matlaB真是很强大,可扩展性能这么广泛 厉害,这个matlaB真是很强大,可扩展性能这么广泛 so diffidult! 还好吧,是你没有做那个,其实很简单的。 程序中的{:soso_e100:}是什么意思啊 进来学习一下 厉害;谢谢楼主 {:3_48:}{:3_48:}{:3_48:} {:3_48:}{:3_48:}{:3_48:}