我想用一些不适合内存的大矩阵,memory.My矩阵是不稀疏的。我需要一些批处理\块处理或在线机器学习算法。
我需要:1.从硬盘驱动器上存储的大矩阵读取一些数据块(可以放在RAM中),最好是像普通的matlab矩阵一样访问它。2.将一些数据块附加到存储在磁盘上的大矩阵的末尾。
发布于 2013-08-07 19:52:20
您将在读/写.mat矩阵的部分找到答案here。
%read
matObj = matfile('myBigData.mat');
loadedData = matObj.X(1:4,1:4);
%write
matObj.X(81:100,81:100) = magic(20);编辑
下面是一些显示append函数的代码
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)here是针对.mat的完整matlab帮助(包括限制)。
发布于 2013-08-07 22:27:02
在Matlab Central File Exchange上有一个很好的项目,它解决了大量数据点(或大型矩阵)的问题。这是Malcolm Lidierth的滑铁卢项目文件和矩阵实用程序
http://www.mathworks.co.uk/matlabcentral/fileexchange/12250-project-waterloo-file-and-matrix-utilities
发布于 2013-08-10 21:23:05
@geek_girl
谢谢你的评论。文件和矩阵实用程序的代码位于SourceForge上:
https://sourceforge.net/projects/waterloo/files/Waterloo%20MATLAB%20File%20and%20Matrix%20Utilities/
整个项目的Git代码库位于:
https://stackoverflow.com/questions/18102281
复制相似问题