는, MATLAB에서 hdf5write
방법은 자동으로 열 벡터 내 행 벡터로 변환되어 그들을 다시 읽기 :행 벡터를 MATLAB에서 HDF로 저장할 수 있습니까? 나는이 때 몇 가지 이유를 들어
>> hdf5write('/tmp/data.h5','/data',rand(1,10));
>> size(hdf5read('/tmp/data.h5','/data'))
ans =
10 1
그러나, 제 3 차원의 행 벡터에 대해, 그것이 잘 돌아 오면 :
>> 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 ×로 돌아 오는되어야한다. 또한, 문제 정말는 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}입니다.