HighFive - 将数据集读入 Eigen3 矩阵

问题描述 投票:0回答:1

我正在尝试仅头文件库 HighFive,它为 libhdf5 提供了更方便的接口。提供的示例展示了如何从 Eigen::MatrixXd 填充数据集。我有兴趣朝另一个方向发展——从数据集中填充特征矩阵。我尝试过这种天真的方法:

HighFive::File file(strFileName, HighFive::File::ReadOnly);
auto dataset = file.getDataSet("/data");
Eigen::MatrixXd m(rowDim, colDim);
dataset.read(m);

编译器跟踪显示了这一点;

static assertion failed: The type is not trivially copyable
从我尝试调用
read()
的点开始。我应该提到的是,当我安装 HighFive 时,我确实按照说明启用了 Eigen 支持。

c++ hdf5 eigen3
1个回答
0
投票

事实证明,H5Easy 命名空间中有一个函数可以满足我的需求。以下方法确实有效,而不是我在问题中尝试的方法:

#include <highfive/H5File.hpp>
#include <highfive/H5Easy.hpp>

HighFive::File file(strFileName, HighFive::File::ReadOnly);
Eigen::MatrixXd matrix1= H5Easy::load<Eigen::MatrixXd>(file, "/data");
© www.soinside.com 2019 - 2024. All rights reserved.