在Matlab中使用大矩阵

时间:2013-08-07 11:31:34

标签: matlab matrix large-data bigdata

我想使用一些不适合RAM内存的大矩阵。我的矩阵不稀疏。 我需要这个批量\块处理或在线机器学习算法。

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

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

Matlab中央文件交换中有一个很好的项目可以解决大量数据点(或大型矩阵)的问题。 这是Malcolm Lidierth的Project Waterloo File和Matrix Utilities

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

答案 2 :(得分:1)

@geek_girl

感谢您的评论。 File和Matrix Utilities的代码在SourceForge上:

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

整个项目的Git回购是:

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