最大 2GB の大きな CSV ファイルを扱う必要があります。より具体的には、このすべてのデータを mySQL データベースにアップロードする必要がありますが、その前にいくつかの計算を行う必要があるため、このすべてを MATLAB で行う必要があります (また、上司は MATLAB でやりたいと思っています。 MATLAB :( )。
これらの大きなファイルをどのように処理できますか?
おそらくtextscanを使用して、データをチャンクで読み取ってから処理する必要があります。これはおそらく、一度に 1 行ずつ読み取るよりも効率的です。たとえば、3 列のデータがある場合、次のようにすることができます。
filename = 'fname.csv';
[fh, errMsg] = fopen( filename, 'rt' );
if fh == -1, error( 'couldn''t open file: %s: %s', filename, errMsg ); end
N = 100; % read 100 rows at a time
while ~feof( fh )
c = textscan( fh, '%f %f %f', N, 'Delimiter', ',' );
doStuff(c);
end
編集
最近 (R2014b 以降) では、 を使用する方が簡単で、おそらく効率的datastore
です。
このファイル交換項目には、MATLAB で大規模なデータセットを処理するための適切なアドバイスがあります。
具体的なトピックは次のとおりです。
* MATLAB での配列とワークスペースの最大サイズの理解 * MATLAB
で使用可能なメモリを表示するための文書化されていない機能の使用
* MATLAB 用に 1 GB の追加メモリを取得するための Windows XP での 3GB スイッチの設定
* textscan を使用した大きな読み取り大きなバイナリ ファイルを読み取るためのテキスト ファイルとメモリ マッピング機能