2

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

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

4

3 回答 3

3

您将在此处.mat找到有关读取/写入矩阵部分的答案。

%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)

完整的 matlab 帮助.mat(包括限制)在这里

于 2013-08-07T11:52:19.677 回答
1

@女极客

谢谢你的评论。文件和矩阵实用程序的代码在 SourceForge 上:

https://sourceforge.net/projects/waterloo/files/Waterloo%20MATLAB%20File%20and%20Matrix%20Utilities/

整个项目的 Git 存储库位于:

https://sourceforge.net/p/waterloo/beta/ci/master/tree/

于 2013-08-10T13:23:04.690 回答
1

Matlab Central File Exchange 上有一个出色的项目,可以解决大量数据点(或大型矩阵)的问题。这是 Malcolm Lidierth 的滑铁卢项目文件和矩阵实用程序

http://www.mathworks.co.uk/matlabcentral/fileexchange/12250-project-waterloo-file-and-matrix-utilities

于 2013-08-07T14:27:02.063 回答