我想使用一些不能放入RAM内存的大矩阵。我的矩阵并不稀疏。 我需要这个批处理\块处理或在线机器学习算法。在Matlab中使用大矩阵
我需要的是: 1.从存储在硬盘上的大矩阵中读取一些数据块(可以放入RAM中),最好我想像普通的matlab矩阵那样访问它。 2.添加一些数据到存储在光盘上的大矩阵的末尾。
我想使用一些不能放入RAM内存的大矩阵。我的矩阵并不稀疏。 我需要这个批处理\块处理或在线机器学习算法。在Matlab中使用大矩阵
我需要的是: 1.从存储在硬盘上的大矩阵中读取一些数据块(可以放入RAM中),最好我想像普通的matlab矩阵那样访问它。 2.添加一些数据到存储在光盘上的大矩阵的末尾。
您可以在.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。
在Matlab Central File Exchange上有一个很好的项目,它解决了大量数据点(或大矩阵)的问题。 这是项目滑铁卢文件和矩阵工具由Malcolm Lidierth
@geek_girl
感谢这些意见。对于文件和Matrix实用程序中的代码是在SourceForge上:
https://sourceforge.net/projects/waterloo/files/Waterloo%20MATLAB%20File%20and%20Matrix%20Utilities/
一次Git回购整个项目是:
诉诸于用大块工作之前,你有没有试过使用比默认的'double'更多的“经济”数据类型? –
我们在谈论多少数据? – MZimmerman6
数据量并不重要我需要“界面”来处理大矩阵,例如我的应用程序我想限制块的大小为32Mb \ 1Gb \或任何即使我的计算机有8Gb的内存,所以我需要一种方法来访问存储在硬盘上的部分数据。但无论如何,如果你感兴趣的数据大约从几十到几百Gb。 – mrgloom