在MATLAB中使用VideoWriter的子图的动画

时间:2018-01-26 09:13:03

标签: matlab animation matlab-figure subplot

我正在尝试使用VideoWriter从带有2个子图的图中在MATLAB中创建动画文件。但是,我得到的avi文件只包含一个子图。

以下是代码:

clc    
clear 
vidObj = VideoWriter('randdata');   
open(vidObj)    
figure (1)   
for i = 1:100       
    clf        
    subplot(1,2,1)        
    imagesc(rand(100))        
    subplot(1,2,2)        
    imagesc(rand(100))       
    drawnow       
    CF = getframe;        
    writeVideo(vidObj,CF);        
end

这里肯定会有一些简单的错误,但我不知道是什么。我想捕获整个数字。

1 个答案:

答案 0 :(得分:2)

第一行中的documentation for getframe个州:

  

F = getframe捕获当前的

所以这是捕捉轴而不是数字。

您希望按照文档

中的说明使用它
  

F = getframe(图)捕获图中标识的数字。 如果要捕获图形窗口的整个内部,请指定一个图形,包括轴标题,标签和刻度线。捕获的电影帧不包括图形菜单和工具栏。

所以你的代码应该是

clc; clear
vidObj = VideoWriter('randdata');
open(vidObj);
figure(1);
for ii = 1:100
    clf
    subplot(1,2,1)
    imagesc(rand(100))
    subplot(1,2,2)
    imagesc(rand(100))
    drawnow;
    % The gcf is key. You could have also used 'f = figure' earlier, and getframe(f)
    CF = getframe(gcf); 
    writeVideo(vidObj,CF);
end

为方便起见,您可能希望获得一个像流行(和简单)gif一样的文件交换功能来创建GIF动画。