我正在将大量数字打印为 .png 文件。每个图都是数据矩阵中的一列图,我获取 .png 文件并将它们串在一起形成动画。
我的问题是,前几百张图像打印得很快,但创建每个新图形的时间却迅速增加,从前几百个 .png 文件的约 0.2 秒到第 800 个图形的 2 秒或更长。
脚本运行期间内存使用量会增加,但每隔几秒左右仅增加 1MB。这是在运行 R2009b 64 位的 Windows 上进行的。
我的代码看起来像这样:
n = 1000;
matrix = rand(n);
f = figure('Visible','off'); % create the figure
for i_ =1:n
plot(1:n,matrix(:,i_));
ylim([0 1]);
set(f,'PaperUnits','inches','PaperPosition',[0 0 6 4]);
png_name = [ 'img/timestep_' sprintf('%05d',i_) ];
print('-dpng', png_name);
end
尽量不要重新生成情节,而只改变XData
and YData
每次迭代的属性:
set(f,'PaperUnits','inches','PaperPosition',[0 0 6 4]);
h = plot(1, matrix(:,1));
ylim([0 1]);
for i_ = 1:n
set(h, 'XData', 1:n, 'YData', matrix(:,i_))
png_name = sprintf('img/timestep_%05d',i_);
print('-dpng', png_name);
end
另一个建议。如果你想创建动画,为什么要生成 png 文件?使用GETFRAME http://www.mathworks.com/help/techdoc/ref/getframe.html并制作一个MOVIE http://www.mathworks.com/help/techdoc/ref/movie.html直接在 MATLAB 中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)