Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/139.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何读取HDF5中存储的ArrayType的一个组件_C++_C_Hdf5 - Fatal编程技术网

C++ 如何读取HDF5中存储的ArrayType的一个组件

C++ 如何读取HDF5中存储的ArrayType的一个组件,c++,c,hdf5,C++,C,Hdf5,我在文件中有一个HDF5数据集,它是使用H5::ArrayType为double[3]编写的。DataSpace是一维(rank=1)的ndat条目(每种类型为double[3]) 现在我只想把每个double[3]中的第二个读入doubles的1D缓冲区。我该怎么做 相反,如果数据空间是二维的,维度为{ndat,3},我可以简单地使用“超板”选择方法来选择第二维度中的中间元素。我也可以在这里做吗?怎么做 我很高兴C或C++中的答案。 < P>好的,所以我在这个实验中发现,这是不可能>,我认为这

我在文件中有一个HDF5数据集,它是使用
H5::ArrayType
double[3]
编写的。
DataSpace
是一维(
rank=1
)的
ndat
条目(每种类型为
double[3]

现在我只想把每个
double[3]
中的第二个读入
double
s的1D缓冲区。我该怎么做

相反,如果
数据空间
是二维的,维度为
{ndat,3}
,我可以简单地使用“超板”选择方法来选择第二维度中的中间元素。我也可以在这里做吗?怎么做


<>我很高兴C或C++中的答案。

< P>好的,所以我在这个实验中发现,这是<强>不可能>,我认为这是的限制。从本质上讲,HDF5将数据类型视为基本类型,不会将其分解。因此,对于使用
H5::ArrayType
编写的HDF5
std::array
和使用
H5::PredType::NATIVE\u double
编写的
double[3]
来说,两者有根本不同:前者不能读入后者,反之亦然


<> P> >唯一的解决方案是<强>避免H5::ArrayType < /强>,并使用多维数据集代替.< /P> < P>好的,因此,我对此进行了实验,发现这是<强>不可能>,我认为HDF5<强>限制>强>。从本质上讲,HDF5将数据类型视为基本类型,不会将其分解。因此,对于使用
H5::ArrayType
编写的HDF5
std::array
和使用
H5::PredType::NATIVE\u double
编写的
double[3]
来说,两者有根本不同:前者不能读入后者,反之亦然

因此,唯一的解决方案是避免H5::ArrayType,而是使用多维数据空间