RAM メモリに収まらない大きな行列を使用したいのですが、行列がスパースではありません。これは、バッチ\チャンク処理またはオンライン機械学習アルゴリズムに必要です。
必要なもの:1.ハードドライブに保存されている大きなマトリックスから(RAMに収まる)データのチャンクを読み取り、できれば通常のmatlabマトリックスのようにアクセスしたい。2.ディスクに保存されている大きなマトリックスの最後に、データのチャンクを追加します。
RAM メモリに収まらない大きな行列を使用したいのですが、行列がスパースではありません。これは、バッチ\チャンク処理またはオンライン機械学習アルゴリズムに必要です。
必要なもの:1.ハードドライブに保存されている大きなマトリックスから(RAMに収まる)データのチャンクを読み取り、できれば通常のmatlabマトリックスのようにアクセスしたい。2.ディスクに保存されている大きなマトリックスの最後に、データのチャンクを追加します。
ここ.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
(制限を含む) はこちらです。
Matlab Central File Exchange には、多数のデータ ポイント (または大きな行列) の問題に対処する優れたプロジェクトがあります。It's Project Waterloo File and Matrix Utilities by Malcolm Lidierth
@geek_girl
コメントありがとうございます。File and Matrix Utilities のコードは SourceForge にあります。
https://sourceforge.net/projects/waterloo/files/Waterloo%20MATLAB%20File%20and%20Matrix%20Utilities/
プロジェクト全体の Git リポジトリは次の場所にあります。