从HDF5文件读取:3D数据到内存中的1D向量

时间:2016-04-22 18:00:52

标签: c++ hdf5

是否可以使用特定的memspace布局将HDF5文件中的3D数组读入C ++中的1D数组/向量?

我试过了:

H5File file(file_name, H5F_ACC_RDONLY);
DataSet dataset = file.openDataSet(dataset_name);
DataSpace dataspace = dataset.getSpace();
hsize_t dim[3];
dataspace.getSimpleExtentDims(dim, NULL);

hsize_t memdim[1];
memdim[0] = dim[0] * dim[1] * dim[2];
DataSpace memspace(1, memdim);

vector<float> data_out(memdim[0]);
// set the memory layout to 1D
dataset.read(data_out.data(), PredType::NATIVE_FLOAT, memspace, dataspace);

但是矢量未正确填充。我以为可能有默认映射。也许没有?我该如何指定一个?

1 个答案:

答案 0 :(得分:0)

事实证明,即使你读入一维数组,你仍然会将3D数据空间传递给read的{​​{1}}方法。

dataset