【问题标题】:C++ Code Creating Empty HDF5 File Instead of DatasetC++ 代码创建空 HDF5 文件而不是数据集
【发布时间】:2020-09-12 17:33:49
【问题描述】:

我的班级中有以下代码来创建一个包含零矩阵的 HDF5 文件。但是,它会创建一个完全没有数据集的空 hdf5 文件。如何将数据集写入文件?

#include <H5Cpp.h>
#include <Eigen/Dense>

H5::H5File file("test_save.hdf5", H5F_ACC_TRUNC);
hsize_t dims[2] {10, 5};


std::cout << dims[0] << " " << dims[1] << std::endl;
std::cout << data_set_name << std::endl;
H5::DataSpace dataspace(2, dims);

auto dataset = file.createDataSet("test_dataset", H5::PredType::NATIVE_DOUBLE, dataspace);
Eigen::MatrixXd temp(10, 5);
temp.setZero();
dataset.write(temp.data(), H5::PredType::NATIVE_DOUBLE);

dataset.close();
file.close();

【问题讨论】:

    标签: c++ hdf5


    【解决方案1】:

    不确定 H5Cpp 库是如何做到的,但使用 HDFql 可以解决如下(请注意,由于您调用 temp.setZero();,写入的数据将为零):

    #include <HDFql.hpp>
    #include <Eigen/Dense>
    
    HDFql::execute("CREATE TRUNCATE AND USE FILE test_save.hdf5");
    
    HDFql::execute("CREATE DATASET test_dataset AS DOUBLE(10, 5)")
    
    Eigen::MatrixXd temp(10, 5);
    temp.setZero();
    
    sprintf(script, "INSERT INTO test_dataset VALUES FROM MEMORY %d", HDFql::variableTransientRegister(temp.data()));
    
    HDFql::execute(script);
    

    【讨论】:

      猜你喜欢
      • 2015-05-18
      • 2019-02-04
      • 2018-11-20
      • 2021-11-09
      • 1970-01-01
      • 2019-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多