大容量csvの切り取り
古いコメントを表示
1から3000001行まで存在するcsvデータを、1データずらしで3001ずつ切り取りcsvで保存したいのですが、下記のcsvread関数ではcsvreadのところでnの変数を読み取ってくれないのですがこれに代わるデータの切り取り方はありますでしょうか?
1つのcsvデータが約14MBですので全て書き出すとなるとメモリの容量不足になりそうですが、メモリの容量は無視していただいて構いません。
書き出されるデータは連番で約300万近いデータが書き出されると思います。
n = 1;
fileNum = 1;
filename = 'testfilename.csv';
while true
sig = csvread(filename,n-1,0(n-1,0,n+3000,0));
L = length(sig); %L = 3000001
Overwrap = 1; %1データずつ動く
pickupLength = 3001;
fileName = ['fftcsvtitle_' num2str(fileNum) '.csv'];
csvwrite(fileName, sig);
fileNum = fileNum + 1;
n = n + bufOverwrap;
if n > L-Length
break
end
end
採用された回答
その他の回答 (1 件)
Shoumei
2019 年 7 月 12 日
0 投票
どんなエラーが出てますか?
csvreadの引数にある、0(n-1,0,n+3000,0) ってどんな値を入れたいのでしょう?
引数にどんな値が入っているのか自分で確認してみると自己解決出来ると思いますよ。
カテゴリ
ヘルプ センター および File Exchange で 標準ファイル形式 についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!