无法打印当前数字

时间:2017-09-14 14:36:31

标签: animation plot octave

尝试通过将帧生成为一系列图形来创建简单动画,并以.png格式 1 保存:

clc
clear
close all

% don't display plot : produces error.
%set(0, 'defaultfigurevisible', 'off');

% number of frames.
N = 2; 

% generate data sets.
x = linspace(0, 6 * pi, 1000);
y = sin(x);

% run animation.
for i = 1 : N

  % create figure.
  clf
  % hold on % produces error.
  plot(x, y, x(i), y(i), 'ro')
  % plot(x(i), y(i), 'ro') 

  grid on
  axis tight

  title( sprintf( 'Sine Wave at (%f, %f)', x(i), y(i) ) )
  xlabel('x')
  ylabel('y')

  drawnow 

  % create frame name: fr00001.png, etc. 
  framename = sprintf('output/fr%05d.png', i);

  % save current figure in file: output.
  print(framename);

end  

然而,我唯一得到的是:

  

Mesa警告:无法打开dxtn.dll,软件DXTn压缩/解压缩不可用
GL2PS错误:视口不正确(x = 0,y = 240883432,width = 0,height = 240885832)错误:从第172行第7行的 opengl_print 调用,在第519行第14行打印第48行第3行的正弦波

任何建议都将受到赞赏。

注意:故意留下评论的行。

1。稍后在编码器的帮助下以.avi格式拼接成电影。功能

在Windows 10上的Octave-4.2.1上执行

1 个答案:

答案 0 :(得分:0)

有什么帮助 1 使用带有图形图形句柄的print()并定义文件名(.png),包括目录的绝对路径他们将被存储。注意到子目录用\而不是/表示,此外,它需要一个额外的\转义字符才有效。然后是以下代码:

N = 1000;
x = linspace(0, 6*pi, N);
y = sin(x);

abspath = 'D:\\...\\Project\\output\\';
fh = figure();

for i = 1 : N  
  clf
  hold on  
  plot(x, y);
  plot(x(i), y(i), 'ro')
  grid on
  axis tight
  title( sprintf( 'Sine Wave at (%f, %f)', x(i), y(i) ) )
  xlabel('x')
  ylabel('y')
  drawnow

  framename = sprintf('%sfr%04d.png', abspath, i);
  print(fh, framename);
end  

产生1000帧,当 2 缝合在一起时给出:

enter image description here

1。几百个地块之后它仍然意外崩溃。

2。前100个.png文件使用imagemagick的命令转换为.gifmagick convert -delay 10 -loop 0 *png output.gif