2015-04-07 38 views
1

我正在使用Octave編寫一個在不同時間段繪製函數的腳本。我希望能夠創作出這些情節的動畫,以便通過時間觀察這些變化。用多個圖創建動畫 - Octave/Matlab

有沒有辦法做到這一點,以便可能每次以每種情節可以結合創建此動畫的方式保存每個情節?

在此先感謝您的建議!

+0

在MATLAB中,有'getframe'功能。這在Octave中是否也存在? – hbaderts

+0

使用循環並在每次迭代時更新繪圖? –

+0

我這樣做,但我只是繪製每個功能在同一個情節(不動畫)。另外,這不允許我將連續的地塊保存爲動畫 – user3460758

回答

3

這有點雜牌組裝電腦的,但你可以做以下(在這裏工作與倍頻4.0.0-RC2):

x = (-5:.1:5); 
for p = 1:5 
    plot (x, x.^p) 
    print animation.pdf -append 
endfor 
im = imread ("animation.pdf", "Index", "all"); 
imwrite (im, "animation.gif", "DelayTime", .5) 

基本上,打印所有地塊成PDF,每頁一個。然後將PDF文件作爲圖像讀取並以GIF形式打印回來。這在Matlab上不起作用(它的imread實現不能處理pdf)。

+0

好吧,我會試試看。 – user3460758

+0

嗯確定不是我正在尋找....我想將它保存到某種電影文件以及添加到演示文稿 – user3460758

+0

@ user3460758定義視頻文件?你沒有聲音,只有圖像,所以GIF應該做得很好。它也應該在演示文稿中顯示爲動畫。請注意,您可以使用LoopCount,因此它不會循環播放動畫,甚至可以將數組作爲DelayTime用於不同的時間間隔。您的解決方案完全是什麼問題? – carandraug

3

這將創建一個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