Performance 在Matlab中加载数据的最快方法是什么

Performance 在Matlab中加载数据的最快方法是什么,performance,matlab,format,hdf5,Performance,Matlab,Format,Hdf5,我有大量的数据(>800Mb),需要很长时间才能加载到Matlab中,主要是因为它被分割成了小文件,每个二进制mat文件都是最快的。只用 save myfile.mat <var_a> <var_b> ... 保存myfile.mat。。。 查看最新版本的MATLAB使用的数据格式作为.mat文件的底层格式。您可以使用该函数手动创建自己的HDF5文件,并且可以从具有HDF绑定的任何语言访问该文件(大多数常用语言都有,或者至少提供了一种集成可以调用HDF5库的C代码的方法

我有大量的数据(>800Mb),需要很长时间才能加载到Matlab中,主要是因为它被分割成了小文件,每个二进制mat文件都是最快的。只用

save myfile.mat <var_a> <var_b> ...
保存myfile.mat。。。
查看最新版本的MATLAB使用的数据格式作为.mat文件的底层格式。您可以使用该函数手动创建自己的HDF5文件,并且可以从具有HDF绑定的任何语言访问该文件(大多数常用语言都有,或者至少提供了一种集成可以调用HDF5库的C代码的方法)


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

当我使用“-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
更改后:

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使用的压缩比新版本少。
因此,您的文件大小会更大,但加载速度会更快。

是的,我想可能是这样。有没有从Matlab读取mat文件的选项?对我来说,HDF5格式似乎胜出了,它似乎比save()快2到10倍,加载50Mb文件的性能类似。您可能会将未压缩的HDF5与
save
命令使用的gzip压缩HDF5进行比较。您可以尝试基本上是HDF5函数的包装器,其行为类似于
save
命令,无需压缩。