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

Matlab Central File Exchange には、多数のデータ ポイント (または大きな行列) の問題に対処する優れたプロジェクトがあります。It's Project Waterloo File and Matrix Utilities by Malcolm Lidierth

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

于 2013-08-07T14:27:02.063 に答える
1

@geek_girl

コメントありがとうございます。File and 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/

于 2013-08-10T13:23:04.690 に答える