Код C ++, создающий пустой файл HDF5 вместо набора данных - PullRequest
0 голосов
/ 26 мая 2020

В моем классе есть следующий код для создания файла 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();

1 Ответ

1 голос
/ 26 мая 2020

Не уверен, как это делается с библиотекой H5 Cpp, но с HDFql это можно решить следующим образом (обратите внимание, что записанные данные будут нулями, поскольку вы вызываете temp.setZero();):

#include <HDFql.hpp>
#include <Eigen/Dense>

HDFql::execute("CREATE TRUNCATE FILE test_save.hdf5");

HDFql::execute("CREATE DATASET test_save.hdf5 test_dataset AS DOUBLE(10, 5)")

Eigen::MatrixXd temp(10, 5);
temp.setZero();

sprintf(script, "INSERT INTO test_save.hdf5 test_dataset VALUES FROM MEMORY %d", HDFql::variableTransientRegister(temp.data()));

HDFql::execute(script);
...