出於某種原因,在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
做正確的事情行向量?他們應該回來爲1×10,而不是10×1
編輯問題稍微複雜一些,因爲我使用C-MEX基礎以後實際讀取數據,而不是hdf5read
。此外,這個問題真的是在hdf5write
,這是可見的HDF5文件本身:
>> hdf5write('/tmp/data.h5','/data',randn(1,10));
>> ! h5ls /tmp/data.h5
data Dataset {10}
也就是說,該數據被保存爲在HDF5文件中的一維數組。爲了比較,我嘗試使用實際的2-d矩陣(顯示它的樣子),1維列向量,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}而不是數據集{10,1}。