为什么 MATLAB 在打印大量 (.png) 图形时速度会变慢?

2024-05-11

我正在将大量数字打印为 .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(使用前将#替换为@)

为什么 MATLAB 在打印大量 (.png) 图形时速度会变慢? 的相关文章

  • QWebSocketServer - 不释放内存

    首先 我在安全 websocket 服务器应用程序上运行 valgrind 并发现了一个问题 在 Qt Memcheck 中我必须检查 外部错误 看到它 一些字节是肯定输了 指着我的main就在我的地方QCoreApplication ex
  • 基本矩阵错误?

    我试图通过扫描从相机拍摄的两个图像 检测图像中的特征 匹配它们 创建基本矩阵 使用相机内在函数计算基本矩阵 然后分解它以找到旋转和翻译 这是matlab代码 I1 rgb2gray imread 1 png I2 rgb2gray imre
  • 计算给出数组中最小标准差的子集

    让我们有一个大小的向量N 例如 x rand N 1 我想计算长度子集的最小标准差K在向量中 When N and K很小 很容易找到最好的子集 因为我可以使用nchoosek N K 枚举所有可能的子集 但是当值N and K比我们说的要
  • 在 MATLAB 中验证输入的最佳实践

    在验证 MATLAB 函数中的输入时 什么时候使用 inputParser 比使用断言更好 或者还有其他更好的工具可用吗 我个人发现使用 inputParser 不必要地复杂 对于 Matlab 始终需要检查 3 项内容 存在 类型和范围
  • 计算向量的导数

    我有以下函数 维维亚尼曲线 Phi t cos t 2 cos t sin t sin t 只需检查它是否有效 s linspace 0 T 1000 plot3 cos s 2 cos s sin s sin s 如何推导函数Phi 可能
  • MATLAB 问题中的 Parfor

    为什么我不能使用parfor在这段代码中 parfor i 1 r for j 1 N r xr j N r i 1 x i r j 1 end end 这是错误 错误 parfor 中的变量 xr 无法分类 请参阅 MATLAB 中的并行
  • Matlab:如何读取以逗号作为小数分隔符的数字?

    我有很多 数十万 相当大 gt 0 5MB 的文件 其中数据是数字 但以逗号作为小数分隔符 使用像这样的外部工具对我来说是不切实际的sed s g 当分隔符是点时 我只使用textscan fid f f f 但我看不到更改小数点分隔符的选
  • 当您使用 .html() 删除元素时,jQuery 中的事件侦听器是否会自动删除?

    在 jQuery 中如果我们使用 remove 如果要删除某些元素 则与该元素关联的所有绑定事件和 jQuery 数据都将被删除 但是如果我们用以下命令 删除 元素会发生什么 html 我们是否需要在更改任何 html 之前取消绑定所有元素
  • MATLAB - 从目录读取文件?

    我希望从目录中读取文件并对每个文件迭代执行操作 此操作不需要更改文件 我知道我应该为此使用 for 循环 到目前为止我已经尝试过 FILES ls path to folder for i 1 size FILES 1 STRU pdbre
  • matlab中简单正弦波的傅里叶变换

    我尝试显示简单正弦波的频谱 因为我们知道具有固定频率的单个正弦波必须在其频谱中出现峰值我编写了这段代码 但我无法得到这个峰值我的代码中有什么问题 clc nsteps 200 number of signal elements in tim
  • 什么时候会发生内存泄漏?

    我不知道在这里该怎么想 我们有一个作为服务运行的组件 它在我的本地计算机上运行得很好 但在其他一些计算机上 两台计算机的 RAM 都等于 2GB 它开始在第二天和连续几天生成 bad alloc 异常 问题是该进程的内存使用量保持在大约 5
  • Android - 内存泄漏还是?

    两天前我注意到一些事情 我在地图活动上有一个旋转器 在活动的 OnCreate 方法中 我用数据填充微调器 之后 我在 DDMS 中启动堆分析器 开始打开 关闭微调器 我注意到当我打开旋转项时虚拟机分配内存 但是当我关闭它时 虚拟机不会释放
  • Python 中的 eig(a,b) 给出错误“需要 1 个位置参数,但给出了 2 个”

    根据https docs scipy org doc numpy 1 15 0 user numpy for matlab users html https docs scipy org doc numpy 1 15 0 user nump
  • 如何从一个清晰的例子计算二维图像中的吉布斯能量

    我有一个关于矩阵的有趣问题 在吉布斯分布中 吉布斯能量U x 可以计算为 这是所有可能的派系 C 上的派系势 Vc x 的总和 右图 团 c 被定义为 S 中站点的子集 x 蓝色像素的邻域是左图中黄色像素的邻居 其中每对不同的站点都是邻居
  • Matlab 的 fftn 在多线程下变得更慢?

    我可以访问 12 核机器和一些严重依赖 fftn 的 matlab 代码 我想加快我的代码速度 由于 fft 可以并行化 我认为更多的内核会有所帮助 但我看到的恰恰相反 这是一个例子 X peaks 1028 ncores feature
  • JavaScript 画布内存问题

    我在用着getImageData putImageData在 HTML5 画布上能够操作图片 我的问题是浏览器似乎从来没有释放任何内存 http jonelf posterous com lite gc men for sent 直到我关闭
  • php/symfony/doctrine 内存泄漏?

    我在使用 symfony 1 4 和原则 1 2 将对象批量插入数据库时 遇到问题 我的模型有一种称为 Sector 的对象 每个对象都有多个 Cupo 类型的对象 通常范围从 50 到 200000 这些物体非常小 只是一个短标识符字符串
  • 对多个属性使用一种设置方法 MATLAB

    我有几个属性基本上使用相同的属性set method classdef MyClass properties A B end methods function mc MyClass a b Constructor mc A a mc B b
  • Singleton:是否存在内存泄漏?

    这是一个简单的单例 class Singleton Singleton virtual Singleton Singleton Singleton getInstance static Singleton instance if insta
  • 在 Excel 中打印 MATLAB 图窗并调整其大小

    我在 MATLAB 中有两个带有手柄的图形hFig1 and hFig2 我想将它们打印到 Excel 中的特定单元格 单元格 E3 和 I3 并将它们重新调整为 2 英寸 x 3 英寸 我尝试过使用 AddPictures对象处理程序和使

随机推荐