使用多个绘图创建动画-倍频程/Matlab
我用Octave来写一个脚本,在不同的时间段绘制一个函数。我希望制作一个情节动画,以便看到时间的变化 是否有一种方法可以做到这一点,以某种方式每次保存每个情节,从而可以组合每个情节来创建此动画使用多个绘图创建动画-倍频程/Matlab,matlab,animation,plot,octave,Matlab,Animation,Plot,Octave,我用Octave来写一个脚本,在不同的时间段绘制一个函数。我希望制作一个情节动画,以便看到时间的变化 是否有一种方法可以做到这一点,以某种方式每次保存每个情节,从而可以组合每个情节来创建此动画 提前感谢您的建议 这有点麻烦,但您可以执行以下操作(在这里使用倍频程4.0.0-rc2): 基本上,将所有绘图打印成pdf格式,每页一份。然后将pdf作为图像阅读,并将其作为GIF打印回来。这在Matlab上不起作用(它的imread实现无法处理pdf)。这将创建一个动画gif data=rand(100
提前感谢您的建议 这有点麻烦,但您可以执行以下操作(在这里使用倍频程4.0.0-rc2):
基本上,将所有绘图打印成pdf格式,每页一份。然后将pdf作为图像阅读,并将其作为GIF打印回来。这在Matlab上不起作用(它的imread实现无法处理pdf)。这将创建一个动画gif
data=rand(100,100,20); %100 by 100 and 20 frames
%data go from 0 to 1, so lets convert to 8 bit unsigned integers for saving
data=data*2^8;
data=uint8(data);
%Write the first frame to a file named animGif.gif
imwrite(data(:,:,1),'/tmp/animGif.gif','gif','writemode','overwrite',...
'LoopCount',inf,'DelayTime',0);
%Loop through and write the rest of the frames
for ii=2:size(data,3)
imwrite(data(:,:,ii),'/tmp/animGif.gif','gif','writemode','append','DelayTime',0)
end
在MATLAB中,有
getframe
函数。这是否也存在于倍频程中?使用循环并在每次迭代时更新绘图?我正在这样做,但我只是在同一绘图上绘制每个函数(不是动画)。而且,这不允许我将顺序图保存为动画ok太好了,我会尝试一下。嗯,好吧,不完全是我要找的。。。。我想将它保存到某种电影文件中,并添加到presentation@user3460758定义视频文件?你没有声音,只有图像,所以gif应该很好。它还应在演示文稿中显示为动画。请注意,您可以使用LoopCount,这样它就不会循环动画,甚至可以使用数组作为不同时间间隔的延迟时间。你的解决方案到底有什么问题?我发现这似乎是一个简单的方法,使用两行代码:drawnow;暂停(1/20)代码>@user3460758在imread之后,您将得到一个4d矩阵。第3维是RGB通道,第4维是时间。只要旋转它,你需要多少。您也可以调整时间,使用1/20表示延迟时间。此外,它在我的系统上运行良好,因此这可能是图形或倍频程版本的问题。我使用的是octave 4.0.0-rc2,我的graphics_工具包是qt。
data=rand(100,100,20); %100 by 100 and 20 frames
%data go from 0 to 1, so lets convert to 8 bit unsigned integers for saving
data=data*2^8;
data=uint8(data);
%Write the first frame to a file named animGif.gif
imwrite(data(:,:,1),'/tmp/animGif.gif','gif','writemode','overwrite',...
'LoopCount',inf,'DelayTime',0);
%Loop through and write the rest of the frames
for ii=2:size(data,3)
imwrite(data(:,:,ii),'/tmp/animGif.gif','gif','writemode','append','DelayTime',0)
end