は、MATLABでhdf5write
メソッドが自動的に列ベクトルに私の行ベクトルに変換され、それらを再読み込み:MATLABで行ベクトルをHDFに保存するにはどうすればよいですか?私は時に何らかの理由
>> hdf5write('/tmp/data.h5','/data',rand(1,10));
>> size(hdf5read('/tmp/data.h5','/data'))
ans =
10 1
しかし、三次元の行ベクトルのために、それがうまく戻ってきます:
>> hdf5write('/tmp/data.h5','/data',rand(1,1,10));
>> size(hdf5read('/tmp/data.h5','/data'))
ans =
1 1 10
にはどうすればhdf5write
が行ベクトルのために正しいことを行うために得ることができますか?彼らは私が代わりにhdf5read
の、実際に後でデータを読み取るために、CベースのMEXを使用していますので、ない10×1
編集問題はもう少し複雑である、1×10として戻ってくるべきです。また、問題は本当にはhdf5write
であり、これはHDF5ファイル自体に見える:
>> hdf5write('/tmp/data.h5','/data',randn(1,10));
>> ! h5ls /tmp/data.h5
data Dataset {10}
は、データがHDF5ファイル内の1次元配列として保存されます。比較のために、実際の2次元行列(それがどのように見えるか)、1次元列ベクトル、3次元次元に沿った1次元ベクトル、同じくキックの場合はV71Dimensions
トリックを試してみますhdf5read
とhdf5write
両方のヘルプにある:
>> hdf5write('/tmp/data.h5','/data',randn(10,1)); %1-d col vector
>> ! h5ls /tmp/data.h5
data Dataset {10}
>> hdf5write('/tmp/data.h5','/data',randn(1,1,10)); %1-d vector along 3rd dim; annoying
>> ! h5ls /tmp/data.h5
data Dataset {10, 1, 1}
>> hdf5write('/tmp/data.h5','/data',randn(2,5)); %2-d matrix. notice the reversal in dim order
>> ! h5ls /tmp/data.h5
data Dataset {5, 2}
>> hdf5write('/tmp/data.h5','/data',randn(1,10),'V71Dimensions',true); %1-d row; option does not help
>> ! h5ls /tmp/data.h5
data Dataset {10}
ので、問題はhdf5write
であるように見えるん。 'V71Dimensions'
フラグは役に立ちません。結果のhdf5ファイルは、データセット{10,1}ではなくデータセット{10}です。