- 在线时间
- 56 小时
- 最后登录
- 2014-4-16
- 注册时间
- 2011-4-10
- 听众数
- 3
- 收听数
- 0
- 能力
- 0 分
- 体力
- 738 点
- 威望
- 0 点
- 阅读权限
- 40
- 积分
- 303
- 相册
- 0
- 日志
- 0
- 记录
- 2
- 帖子
- 159
- 主题
- 5
- 精华
- 0
- 分享
- 0
- 好友
- 7
升级   1% TA的每日心情 | 开心 2014-4-16 07:55 |
|---|
签到天数: 76 天 [LV.6]常住居民II
 群组: Matlab讨论组 群组: 全国大学生数学建模竞 群组: 数学趣味、游戏、IQ等 群组: 多机器人仿真 |
电影动画的好处就是,运行一次可以多次播放,甚至可以直接生成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
[M,N,K]=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')
|
zan
|