与R相比,MATLAB图形导出速度非常慢

与R相比,MATLAB图形导出速度非常慢,matlab,matlab-figure,Matlab,Matlab Figure,我经常需要将许多数字(数百)导出到一个文件中。目前我使用 print('-dpsc2', outfile, '-append'); 我的代码使用一个隐藏的图形,每个新图形都会重复使用该图形 现在,问题是我可以达到每秒8位数左右的最大输出速度。在R中,您可以轻松地每秒绘制大约200个图形。有人对如何(实质上)加速MATLAB的导出功能有什么建议吗 简我感觉到你的痛苦。这个问题也是用于生成电影的getframe函数效率如此低下的原因。我知道的唯一方法是编写一个更简单的函数,调用低级的硬拷贝函数

我经常需要将许多数字(数百)导出到一个文件中。目前我使用

  print('-dpsc2', outfile, '-append');
我的代码使用一个隐藏的图形,每个新图形都会重复使用该图形

现在,问题是我可以达到每秒8位数左右的最大输出速度。在R中,您可以轻松地每秒绘制大约200个图形。有人对如何(实质上)加速MATLAB的导出功能有什么建议吗


我感觉到你的痛苦。这个问题也是用于生成电影的
getframe
函数效率如此低下的原因。我知道的唯一方法是编写一个更简单的函数,调用低级的
硬拷贝
函数。这里有一些注意事项。
硬拷贝
功能同时支持“dpsc2”和“append”选项,
打印
功能可以:

hardcopy(gcf,'outfile.ps','-dpsc2','-append');
print(gcf,'-dpsc2',outfile.ps','-append')大约需要0.12秒,以上在我的机器上只需要0.004秒


如果您使用
帮助硬拷贝
,您将不会获得太多信息。但是,如果您需要对任何内容进行反向工程,您可以阅读
print
edit print
)的代码或它调用的各种私有函数(例如,
edit private/render
edit private/paperfig
edit private/ghostscript
)。

我怀疑这可能是图形和绘图的生成,而不是打印它们,这很慢。至少,您似乎还没有完成将打印所需时间与生成图形所需时间隔离开来的工作。我这样说是因为我可以看到您没有将句柄传递到打印调用中(例如,请参见中描述的handle参数)。我敢打赌,如果您发布代码来生成图形,我们可以帮助您大大加快速度。或者,你可以自己使用MATLAB分析器。@BobGilmore:不。即使是在速度很快的计算机上,只要将最简单的图形打印到postscript也需要0.11到0.13秒,无论我是否将句柄传递到
打印
。谢谢@BobGilmore。事实上,这真的是关于出口,而不是关于一代人。如果您只是一次又一次地导出相同的图形,您可以看到这一点:
figure;地块(兰特(10,10));抽搐;对于i=1:100的打印('-dpsc2',test.ps','-append');结束;toc在我的机器上大约需要10秒。谢谢!这太棒了!对于我的绘图代码,我实际上可以用
硬拷贝
调用替换
打印
调用,结果很好。只有一个特殊性:为了获得白色背景,我必须调用颜色更改命令作为导出之前的最后一个图形命令。再次感谢!不确定这是否适用于您,但循环展开也可能会帮助您。@starbox:不确定这是否有效。我分析了
print
,它只是花了大量时间准备导出数据<代码>硬拷贝
似乎是其核心的一个命令。请注意,在打开多个图形的情况下使用
硬拷贝
。在这种情况下,捕获图形的顺序甚至很重要,这可能是由于视频卡处理图形缓冲区的方式(和/或Matlab中的错误)。