0

我正在使用版本 R2007a。

首先介绍一点背景知识:我正在创建一个工具,该工具可以从实时获取的数据中累积散点图。当点数足够大时,图形刷新跟不上传入的数据,所以我使用'painters'with 'EraseMode'set to'none'并简单地执行 aset(obj,'xdata',...,'ydata',...)来更新绘图点位置。这非常有效。

顺便说一句,我发现了一个不错的技巧:通过打开双缓冲,MATLAB 总是在内存中保存图像的副本,因此即使窗口被隐藏或最小化,点也会在图像中累积!

现在我想捕捉每个图像来制作电影。我见过各种使用getframe(),addframe()和未记录的hardcopy(). 这些都重新绘制了图形并且旧点丢失了,但这实际上是我可以在后期处理中解决的问题。我的问题是这些功能对于数据采集速度来说太慢了。使用 tic/toc,我发现

tic, getframe(h); toc - 0.13 sec
tic, addframe(h); toc - 0.15 sec
tic, hardcopy(h,'-Dpainters','r0'); toc - 0.07 sec

我看到set tohardcopy()做了一些不同的事情,但即使我能找到如何利用它的输出,它仍然太慢了。'renderer''painters'

但是在双缓冲打开的情况下,图像已经位于后备存储/后缓冲区中。制作一个副本会非常快。那里的任何黑客都可以弄清楚如何获取指向后备存储的指针并复制它吗?

谢谢

4

0 回答 0