2013-08-07 62 views
2

我想使用一些不能放入RAM内存的大矩阵。我的矩阵并不稀疏。 我需要这个批处理\块处理或在线机器学习算法。在Matlab中使用大矩阵

我需要的是: 1.从存储在硬盘上的大矩阵中读取一些数据块(可以放入RAM中),最好我想像普通的matlab矩阵那样访问它。 2.添加一些数据到存储在光盘上的大矩阵的末尾。

+1

诉诸于用大块工作之前,你有没有试过使用比默认的'double'更多的“经济”数据类型? –

+1

我们在谈论多少数据? – MZimmerman6

+0

数据量并不重要我需要“界面”来处理大矩阵,例如我的应用程序我想限制块的大小为32Mb \ 1Gb \或任何即使我的计算机有8Gb的内存,所以我需要一种方法来访问存储在硬盘上的部分数据。但无论如何,如果你感兴趣的数据大约从几十到几百Gb。 – mrgloom

回答

3

您可以在.mat矩阵的读写部分找到答案here

%read 
matObj = matfile('myBigData.mat'); 
loadedData = matObj.X(1:4,1:4); 

%write 
matObj.X(81:100,81:100) = magic(20); 

编辑

下面是该附加功能

A = ones(10,10); 
save('A.mat', 'A','-v7.3'); 
clear A 

matObj = matfile('A.mat','Writable',true); 
matObj.A(8:10,8:10) = ones(3,3) * 3;  %modify 
matObj.A(11,:) = ones(1,10)*4;    %append 

disp(matObj.A) 

.mat(包括限制)的完整MATLAB的帮助一些代码是here

+0

看来,使用这种方法我不能追加到现有的矩阵,但我需要创建新的变量,所以它会工作,但我必须存储数据的裂缝? – mrgloom

+0

您可以将一些数据附加到矩阵。见编辑的答案。 – marsei