我正在尝试从我之前编写的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