我正在嘗試從我之前編寫的HDF5容器中讀取單個文件。我雖然這很簡單:從文件大小和文件索引中獲取索引並讀取HDF5文件的相應部分。用Matlab讀取HDF5容器中的單個文件
file = h5read(filename, datasetname, ...
[ones(1, length(dataSize)-1) fileIdx], [dataSize(1:end-1) fileIdx]);
這轉化爲h5read('myfile.h5', '/data', [1 1 1 4] , [1024 1024 4 4]);
在下面的例子:
% info for myfile.h5
h5disp('myfile.h5');
% HDF5 myfile.h5.h5
% Group '/'
% Dataset 'data'
% Size: 1024x1024x4x5
% MaxSize: 1024x1024x4x5
% Datatype: H5T_IEEE_F64LE (double)
% ChunkSize: 1024x1024x4x1
% Filters: deflate(1)
% FillValue: 0.000000
% read in myfile.h5:
h5read('myfile.h5', '/data', [1 1 1 4] , [1024 1024 4 4]);
...和前三瓷磚的偉大工程,但拋出一個錯誤第四瓷磚:
Error using h5readc
The index arguments exceed the size of the dataset.
Error in h5read (line 58)
[data,var_class] = h5readc(Filename,Dataset,start,count,stride);
...
但是,前面的h5disp('myfile.h5');
表明,HDF5容器與那些文件(1024x1024x4x5
)中的5個一樣大,我正在使用
info = h5info(filename, datasetname);
dataSize = info.Dataspace.Size;
HDF5容器是好的。讀取所有文件,然後在Matlab中訪問BLOB,然後再正常工作。
data = h5read(filename, datasetname);
file = data(:,:,:,fileIndex);
正如我所說,我的方法適用於前三個瓷磚,但然後失敗。我在這裏忽略了什麼嗎?
這正是錯誤的。對不起,謝謝... – Honeybear