Matlab动图保存——GIF制作与视频制作

在Matlab绘制动图时,若想保存成GIF或视频,可参考以下代码。

(1)GIF格式

gif_flag = 1; % 是否保存
if gif_flag == 1
    filename = 'gif_name.gif'; % 动画文件的文件名
end
%% 绘制图的数据
t = linspace(0,2*pi,50);
x = sin(t);
y = cos(t);
axis tight manual % 设置坐标轴
set(gcf,'color','w'); % 将图窗背景设置成白色

for n = 1:length(t)
    plot(x(n),y(n),'o');% 画布上的图形
    axis([-1.5 1.5 -1.5 1.5]); % 设置坐标轴范围
    drawnow % 强制渲染画布
    if gif_flag == 1
         % 保存每一帧为 gif 图像
        frame = getframe(gcf);
        im = frame2im(frame);
        [imind,cm] = rgb2ind(im,256);
        if n == 1
            imwrite(imind,cm,filename,'gif','DelayTime',0.1,'Loopcount',inf);
        else
            imwrite(imind,cm,filename,'gif','DelayTime',0.1,'WriteMode','append');
        end
    end
end

(2)视频格式

video_flag = 1; % 0表示不制作 1表示制作
if video_flag == 1
    makeVideo = VideoWriter('video_name'); % 初始化视频对象
    myWriter.FrameRate = 30;
    open(makeVideo);
end
%% 绘图数据
t = linspace(0,2*pi,50); % 时间
x = sin(t); % x 的位置
y = cos(t); % y 的位置
axis tight manual % 设置坐标轴
set(gcf,'color','w');
for n = 1:length(t)
    plot(x(n),y(n),'o');
    axis([-1.5 1.5 -1.5 1.5]); % 设置坐标轴范围
    if video_flag == 1
        frame = getframe(gcf);
        writeVideo(makeVideo,frame);
    end
    pause(0.01) % 阻塞时间 与视频时长无关
end

if video_flag == 1 % 录制完毕并关闭视频对象
    close(makeVideo);
end

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值