user-interface - 如何加速matlab 'print'函数

标签 user-interface matlab printing save figure

我在 matlab 中编写了一个相当大的数据采集程序,它以非常紧凑的时间安排接收输入数据,并在 GUI 上实时绘制它。我的问题是我需要一种方法让程序用户通过网络查看 GUI 以远程监控他们的数据。我的解决方案是每 5 秒左右拍摄一次 GUI 图的快照,并将该图像托管在 Web 服务器上。

然而这会导致两个 Not Acceptable 问题:

  1. 打印功能实在是太慢了——每次保存大约需要 3-4 秒,而且程序在每次调用“打印”后都会落后于其他例程。

  2. 由于某种原因,打印功能导致 GUI 暂时变形,改变了某些组件的位置并复制了其他组件。它只持续一秒钟左右,但它仍然使我的解决方案不切实际。

有没有办法解决这两个问题?

编辑:*** 对于任何感兴趣的人,我发现的最佳解决方案是使用名为 Minicap 的外部工具包.

最佳答案

文件格式有很大的不同。这是一个示例散点图

n = 1e4;
hfig = figure;
hax = plot(1:n, rand(1, n), '+');

...以及保存为不同格式的一些时间安排。

tic; print(hfig, 'test.bmp', '-dbmp'); toc      %4.1s
tic; print(hfig, 'test.bmp', '-dbmp256'); toc   %2.0s
tic; print(hfig, 'test.png', '-dpng'); toc      %1.9s
tic; print(hfig, 'test.tiff', '-dtiff'); toc    %0.45s
tic; print(hfig, 'test.jpg', '-djpeg'); toc     %0.44s
tic; print(hfig, 'test.wmf', '-dmeta'); toc     %0.42s

tiff, jpegwmf 是最先联合的,虽然 tiff 文件很大,jpeg 质量很差,wmf 有问题,如果你不在 Windows 平台上。


对于光栅格式,分辨率也会影响时间。

tic; print(hfig, 'test600.png', '-dpng', '-r600'); toc   %4.2s
tic; print(hfig, 'test72.png', '-dpng', '-r72'); toc     %0.31s

另一个加快打印速度的方法是删除不需要的部分绘图。透明度是计算密集型的,图例也是如此。对数据进行采样而不是绘制所有数据也可以节省时间。

关于user-interface - 如何加速matlab 'print'函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6817897/

相关文章:

java - 使 ArrayList<JTextArea> 为 JScrollPane

pdf - 由于标题太长,cups 拒绝打印带有 'filter error' 的 pdf 文件

Android 打印到任何蓝牙打印机

javascript - 根据从 UI 中选择的时区过滤 php 中的日期

java - mac上运行java的问题

python - 'matlab.object' 对象无法使用 matlab 引擎调用

arrays - 如何从元胞数组中的矩阵中删除一行

javascript - 如何在用户单击浏览器的打印按钮时打印另一页(或文件)?

java - 用于访问子面板元素的更漂亮的解决方案

arrays - 基于等价性将值分组在一起