cmake c++ hdf5,hdf读取

适用于存在组的情况 Eigen::VectorXd &vd为Eigen中的数据类型,需要另行配置

#include <Eigen/Dense>
#include "netcdfcpp.h"
#include "hdf5.h"
#include "H5Cpp.h"


int read(Eigen::VectorXd &vd, const char *file_path, const char *g_name, const char *d_name)
    {
        //获取文件
        H5::H5File file(file_path, H5F_ACC_RDONLY);
        //获取组
        H5::Group group = file.openGroup(g_name);
        //获取存储空间
        H5::DataSet dataset = group.openDataSet(d_name);
        H5::DataSpace fs = dataset.getSpace();

        //获取维度数
        int dimNums = fs.getSimpleExtentNdims();
        hsize_t * dims = new hsize_t[dimNums];
        //H5::DataSpace myspace(dimNums, dims);
        //读取每个维度的大小
        fs.getSimpleExtentDims(dims);
        //创建接收
        //遍历dims的数量
        int vds = 1;
        for (size_t i = 0; i < dimNums; i++)
        {
            vds = vds * dims[i];
        }
        vd.resize(vds);
        dataset.read(vd.data(), H5::PredType::NATIVE_DOUBLE);
        // cout << vd.size() << endl;
        // for (int i = 0; i < vd.size(); i++)
        // {
        //     cout << vd[i] << endl;
        // }

        delete[]dims;

        fs.close();
        group.close();
        file.close();

        return 0;
    }
posted @   xiaomaixiaomai  阅读(418)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示