2015-04-02 58 views
1

目前,我正在使用MATLAB 2014a。在大量的mat文件中写入的矩阵中有很多数据。我必须进行一些计算,就好像所有的矩阵都是一大块数据。我面临的问题是每个文件已经占用大约800MB,并且会有数十个文件。我估计30 - 60 GB的数据。从文件流式传输变量

我的想法虽然不知道是否可能,但是将它们全部写入磁盘中的一个大变量。但另一个问题是我如何将这么大的块加载到内存中。我在想如果MATLAB提供了类似于流媒体的东西。例如,我会将一个变量传递给一个函数,该函数将该块映射到磁盘中,并且数据将从磁盘而不是内存加载。从数据加载的功能角度来看,这应该没有关系。

可能吗?

谢谢。

回答

0

您可以使用matfile功能(在R2011b介绍):

m = matfile(filename)创建一个MAT文件对象,m,连接到名为filename的MAT文件。该对象允许您直接在MAT文件中访问和更改变量,而无需将变量加载到内存中。

matfile函数提供的部分加载和保存操作需要的内存少于加载和保存命令,它们始终对整个变量进行操作。

您可以从文件中加载/保存部分变量。请参阅链接文档中的示例。

+0

我还没有检查过它。我一直在想,如果我可以传递一个matfile对象来引用一个变量,而不是存储在内存中的常规matlab变量。 – Celdor 2015-04-02 12:22:08

+0

不知道它是如何工作的。我从来没有使用'matfile'我自己 – 2015-04-02 12:26:17

+0

我会在MATLAB论坛上提问。谢谢。 – Celdor 2015-04-02 12:26:48

0

如果可能的话,我会建议升级到R2014b,然后使用mapreducedatastore。这是专门设计用于处理大量数据(即当你有太多适合RAM的情况)。

+0

不,我恐怕2014a是目前唯一可用的版本。我知道2014b有它。这就是我在文章中提到MATLAB版本的原因。 – Celdor 2015-04-02 12:20:06