私は巨大な csv ファイル (例: 数ギグ以上) を持っており、Matlab でそれを読み込んで各ファイルを処理したいと考えています。ファイル全体を読み取ることは不可能なので、次のコードを使用して各行を読み取ります。
fileName = 'input.txt';
inputfile = fopen(fileName);
while 1
tline = fgetl(inputfile);
if ~ischar(tline)
break
end
end
fclose(inputfile);
これにより、行が文字列であるサイズ (1,1) のセル配列が得られます。私が望むのは、このセルを数字だけの通常の配列に変換することです。例えば:
input.csv:
0.0,0.0,3.201,0.192
2.0,3.56,0.0,1.192
0.223,0.13,3.201,4.018
最初の行の Matlab での最終結果:
A = [0.0,0.0,3.201,0.192]
double(tline) で tline を変換しようとしましたが、これはまったく異なる結果をもたらします。また、正規表現を使用しようとしましたが、そこで立ち往生しました。すべての値を 1 つの配列の別のセルに分割するところまで来ました。しかし、str2double で double に変換すると NaN しか得られません...
任意のヒント?ファイル全体を読み取るにはすでに時間がかかるため、ループがないことが望ましいです。