尝试通过将帧生成为一系列图形来创建简单动画,并以.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
格式拼接成电影。功能
答案 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 缝合在一起时给出:
1。几百个地块之后它仍然意外崩溃。
2。前100个.png
文件使用imagemagick的命令转换为.gif
:magick convert -delay 10 -loop 0 *png output.gif
。