gpt4 book ai didi

c++ - 获取 HDF5 数据集的维度

转载 作者:可可西里 更新时间:2023-11-01 17:26:04 36 4
gpt4 key购买 nike

我在我的 C++ 程序中使用了一些 HDF5 文件,我对 H5Dopen 函数有疑问。是否可以获取给定文件中 hdf5 数据集的维度?

hid_t file, dset;
herr_t status;
file = H5Fopen (filenameField, H5F_ACC_RDONLY, H5P_DEFAULT);
dset = H5Dopen (file, "/xField", H5P_DEFAULT);

在执行下一行之前,我想获取 dset 的尺寸。

status = H5Dread (dset, H5T_NATIVE_DOUBLE, H5S_ALL, H5S_ALL, H5P_DEFAULT,  &readBuf[0]);

我只找到了 H5Dget_storage_size,但这不适合我的情况。

有人知道怎么做吗?

最佳答案

为此,您需要使用以 H5S 为前缀的数据space 函数。

HDF5 reference manual是使用这些前缀组织的,因此有助于理解。

如何获取数据集的维度

首先,您需要使用 H5Dget_space 从数据集中获取数据空间:

hid_t dspace = H5Dget_space(dset);

如果您的数据空间简单(即不是null标量),那么您可以使用H5Sget_simple_extent_ndims 获取维数。 :

const int ndims = H5Sget_simple_extent_ndims(dspace);

和每个维度的大小使用 H5Sget_simple_extent_dims :

hsize_t dims[ndims];
H5Sget_simple_extent_dims(dspace, dims, NULL);

尺寸现在存储在 dims 中。

关于c++ - 获取 HDF5 数据集的维度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15786626/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com