3

すべての巨大なデータをhdf5の単一のデータセットにまとめる必要があります。さて、あなたが試してみると、問題は次のとおりです。

>> hdf5write('hd', '/dataset1', [1;2;3])
>> hdf5write('hd', '/dataset1', [4;5;6], 'WriteMode', 'append')
??? Error using ==> hdf5writec
writeH5Dset: Dataset names must be unique when appending data.

ご覧のとおり、同じデータセットにデータを追加しようとすると、hdf5writeは文句を言います。私は周りを見回して、考えられる回避策の1つは、最初にデータセットからデータを取得してから、MATLAB環境でデータを連結することです。もちろん、これは小さなデータでは問題になりません。この場合、ギガバイトのデータについて話しているので、Matlabはメモリから大声で叫び始めます。

このため、この場合に利用できるオプションは何ですか?

注:matlabバージョンにはh5write関数はありません。

4

2 に答える 2

2

「追加」モードは、既存のファイルにデータセットを追加することだと思います。

hdf5writeは、既存のデータセットへの追加をサポートしていないようです。新しいh5write関数がない場合、最善の策は、H5*パッケージ関数で公開される低レベルのHDF5ライブラリ関数を使用して小さなユーティリティを作成することです。

はじめに、ドキュメントページには、データセットに追加する方法の例があります。

于 2013-03-11T13:15:20.457 に答える
2

でそれを行うことはできませんがhdf5write、Matlabのバージョンが古すぎない場合は、とで行うことができh5createますh5write。この例は、次のドキュメントh5writeから抜粋したものです。

無制限のデータセットにデータを追加します。

h5create('myfile.h5','/DS3',[20 Inf],'ChunkSize',[5 5]);
for j = 1:10
    data = j*ones(20,1);
    start = [1 j];
    count = [20 1];
    h5write('myfile.h5','/DS3',data,start,count);
end
h5disp('myfile.h5');

古いバージョンのMatlabの場合、MatlabのHDF5低レベルAPIを使用してそれを実行できるはずです。

于 2013-03-11T16:32:31.667 に答える