データストア(tabularTextDatastore)の仕様(readメソッドの限界値?)
6 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
yuuji yamada
el 29 de Nov. de 2018
Comentada: yuuji yamada
el 20 de Dic. de 2018
matlab 2018aを使用しています。
データストア(tabularTextDatastore)を使用してCSVファイルの読込み処理を作成しました。
NumHeaderLinesとReadSizeを指定し、特定の位置から720000行のデータを読み込む
処理を作成しました。しかし、readメソッドでデータを読み込んだところ690000行ぐらいしか読み込むことが
できませんでした。readメソッドで読み込めるデータの数には限界があるのでしょうか
0 comentarios
Respuesta aceptada
Kazuya
el 5 de Dic. de 2018
Editada: Kazuya
el 5 de Dic. de 2018
read メソッドで読み取るデータの数に上限がある、、仕様ではないと思いますが何が原因なんでしょうね。もしメモリに収まらなくて読み込みを途中でやめている・・なんて機能が動いていれば
memory
関数を実行してみて、MATLABが使用できるメモリの量を確認してみるとヒントになるかもしれません。
ちなみに readall メソッドだとどうなりますか?
3 comentarios
michio
el 18 de Dic. de 2018
ReadSize で指定する数字は必ずその行数だけが読み取れるという仕様になっておらず、様々な要因で変化します。今回ご報告いただいたように数十万行を読み込む場合も多少ばらつくことが確認されておりますし、例えば 100 行数のデータを持つ csv ファイルを読み取る場合には、一度の read コマンドで読み取るデータ行数の上限は 100 となり、ファイルをまたいでの一度の読み取りは現時点(R2018b)では実行できません。ご要望は開発サイドに上げさせていただきました。
ご面倒ですが、下記の関数を read の代わりに使っていただければ、CursorSize で指定した数だけ読み込んだデータを返すことができますので、活用いただけますと幸いです。要求した行数を読み取るまで繰り返し read を実行する処理にしております。
function data = myread(ds, CursorSize)
%
% workaround for read method of datastore
% concatenate vertically until the height of data achieves to the required size, CursorSize
%
ds.ReadSize = CursorSize;
data = read(ds);
while height(data) < CursorSize
ImportedSize = height(data);
ds.ReadSize = CursorSize - ImportedSize;
try
adddata = read(ds);
data = vertcat(data,adddata); %#ok
catch ME
if ~strcmp(ME.identifier,'MATLAB:datastoreio:splittabledatastore:noMoreData');
errordlg('Data processing has been failed.');
end
return; % achieves the end of datastore
end
end
end % End-of-myre
Más respuestas (0)
Ver también
Categorías
Más información sobre データ ストア en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!