2015-04-02 99 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