【问题标题】:What is the fastest way to load data in MatlabMatlab中加载数据最快的方法是什么
【发布时间】:2011-06-16 10:05:10
【问题描述】:

我有大量数据 (>800Mb) 需要很长时间才能加载到 Matlab 中,主要是因为它被分成每个

我正在考虑读取数据并将其写入某种二进制文件,这样可以更快地进行后续读取(其中可能有很多,因此我需要加快速度)。

那么,我的问题是,将它们写入磁盘以尽可能快地再次读取它们的最佳格式是什么?

我想我可以选择使用 fwrite 编写,或者只是从 matlab 中保存变量。我想我更喜欢 fwrite 选项,所以如果需要,我可以从另一种包/语言中读取它们...

【问题讨论】:

    标签: performance matlab format hdf5


    【解决方案1】:

    当我像这样使用“-v6”选项保存 .mat 文件时,我的加载速度得到了惊人的提升:

    save(matlabTrainingFile, 'Xtrain', 'ytrain', '-v6'); 
    

    这是我在测试中使用的矩阵的大小...

    Attr Name                   Size                     Bytes  Class
    ==== ====                   ====                     =====  ===== 
      g  Xtest               1430x4000                45760000  double
      g  Xtrain              3411x4000               109152000  double
      g  Xval                1370x4000                43840000  double
      g  ytest               1430x1                      11440  double
      g  ytrain              3411x1                      27288  double
      g  yval                1370x1                      10960  double
    

    ...以及我们实现的性能改进:

    改动前:

    time to load the training data: 78 SECONDS!!! 
    time to load validation data:   32
    time to load the test data:     35
    

    改动后:

    time to load the training data: 0 SECONDS!!!
    time to load validation data:   0
    time to load the test data:     0
    

    显然,它之所以如此有效,是因为旧版本 6 使用的压缩比新版本少。 所以你的文件会更大,但加载速度会更快。

    【讨论】:

      【解决方案2】:

      查看HDF5 数据格式,最新版本的 MATLAB 将其用作 .mat 文件的基础格式。您可以使用hdf5write 函数手动创建自己的 HDF5 文件,并且可以从任何具有 HDF 绑定的语言访问此文件(大多数常见语言都可以,或者至少提供一种集成可以调用 HDF5 库的 C 代码的方法)。

      如果您的数据是数字数据(并且数据类型相同),您可能会发现很难超越普通二进制 (fwrite) 的性能。

      【讨论】:

      • 对我来说,看起来 HDF5 格式胜出,它似乎比 save() 快 2 到 10 倍,并且加载 50Mb 文件的性能相似
      • 您可能将未压缩的 HDF5 与 save 命令使用的 gzip 压缩的 HDF5 进行了比较。您可以尝试savefast,它基本上是 HDF5 函数的包装器,其行为类似于未压缩的 save 命令。
      【解决方案3】:

      二进制 mat 文件是最快的。只需使用

      save myfile.mat <var_a> <var_b> ...
      

      【讨论】:

      • 是的,我想可能是这样。是否有在 Matlab 之外读取 mat 文件的选项?
      猜你喜欢
      • 2023-03-25
      • 2016-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多