HDF5 使用介绍

article/2025/9/12 14:53:44

1、HDF5介绍

HDF 是用于存储和分发科学数据的一种自我描述、多对象文件格式。HDF 是由美国国家超级计算应用中心(NCSA)创建的,以满足不同群体的科学家在不同工程项目领域之需要。HDF 可以表示出科学数据存储和分布的许多必要条件。HDF 被设计为:

  • 自述性:对于一个HDF 文件里的每一个数据对象,有关于该数据的综合信息(元数据)。在没有任何外部信息的情况下,HDF 允许应用程序解释HDF文件的结构和内容。
  • 通用性:许多数据类型都可以被嵌入在一个HDF文件里。例如,通过使用合适的HDF 数据结构,符号、数字和图形数据可以同时存储在一个HDF 文件里。
  • 灵活性:HDF允许用户把相关的数据对象组合在一起,放到一个分层结构中,向数据对象添加描述和标签。它还允许用户把科学数据放到多个HDF 文件里。
  • 扩展性:HDF极易容纳将来新增加的数据模式,容易与其他标准格式兼容。
  • 跨平台性:HDF 是一个与平台无关的文件格式。HDF 文件无需任何转换就可以在不同平台上使用。

(官方介绍:https://support.hdfgroup.org/HDF5/whatishdf5.html)

2、HDF5的文件组织

一个HDF5文件就是一个由两种基本数据对象(groups and datasets)存放多种科学数据的容器:

  • HDF5 group: 包含0个或多个HDF5对象以及支持元数据(metadata)的一个群组结构



  • HDF5 dataset: 数据元素的一个多维数组以及支持元数据(metadata)

3、HDF5软件下载

https://support.hdfgroup.org/HDF5/release/obtain518.html

4、目录结构

下载后解压


  • bin目录是已经编译的好的可执行文件。例如:bin目录下的h5dump可以查看h5文件。
  • include目录是编写代码是需要包含的头文件。
  • lib目录是编译代码时需要连接的库。
  • share目录中是example。

5、 example code

#include<stdio.h>
#include<stdlib.h>
#include <iostream>
#include <string>#include "H5Cpp.h" //包含HDF5需要的头文件#ifndef H5_NO_NAMESPACE
using namespace H5;
#ifndef H5_NO_STD
using std::cout;
using std::endl;
#endif  // H5_NO_STD
#endifconst H5std_string FILE_NAME("h5_test.h5");//定义要创建的文件名字
const int RANK = 2; //定义数组的维度
const int M = 3;
const int N = 4;int main(void)
{const H5std_string GROUP_NAME("MyGroup");//定义要创建group的名字const H5std_string DATASET_NAME("MyData");//定义要创建dataset的名字const H5std_string  ATTR_NAME( "MyAttribute" );//定义要创建数据集属性的名字 //准备要存储的数据float *data = (float*)malloc(M*N*sizeof(float));float *tmp=NULL;for(int i =0; i<M; ++i){for(int j =0; j<N; ++j){tmp = data + i*N +j;*tmp = 1.3;}}try{// Turn off the auto-printing when failure occurs so that we can// handle the errors appropriatelyException::dontPrint();//创建文件H5File file(FILE_NAME, H5F_ACC_TRUNC);//创建 groupGroup group(file.createGroup(GROUP_NAME));//创建数据空间hsize_t dims[RANK];               // dataset dimensionsdims[0] = M;dims[1] = N;DataSpace *dataspace = new DataSpace (RANK, dims);//创建数据集DataSet *dataset = new DataSet (group.createDataSet(DATASET_NAME, PredType::NATIVE_FLOAT, *dataspace));//将准备好的数据,写到数据集中。dataset->write(data, PredType::NATIVE_FLOAT);// 创建数据集属性空间.int attr_data[2] = { 100, 200};hsize_t attr_dims[1] = { 2 };DataSpace attr_dataspace = DataSpace (1,attr_dims );// 创建数据集的属性.Attribute attribute = dataset->createAttribute( ATTR_NAME, PredType::STD_I32BE, attr_dataspace);// 写属性.attribute.write( PredType::NATIVE_INT, attr_data);// 关闭数据空间、数据集、group对象.delete dataspace;delete dataset;group.close();}// catch failure caused by the H5File operationscatch(FileIException error){error.printError();return -1;}// catch failure caused by the DataSpace operationscatch(DataSpaceIException error){error.printError();return -1;}// catch failure caused by the Group operationscatch(GroupIException error){error.printError();return -1;}// catch failure caused by the DataSet operationscatch(DataSetIException error){error.printError();return -1;}return 0;
}

6、编译

g++ example.cpp -o example -I./include -L./lib -lhdf5_cpp

7、执行

./example

生成一个 h5_test.h5文件

8、查看

可是使用bin目录的h5dump 查看 命令

./bin/h5dump h5_test.h5

9、显示结果


(完)



http://chatgpt.dhexx.cn/article/MixwFQAo.shtml

相关文章

hdf5 文件生成 C++

使用 hdf5 配置 1. 包含目录 E:\WorkSpace\SoftWare\hdf5\include 2.库目录 E:\WorkSpace\SoftWare\hdf5\lib\ 3.链接器 -输入 hdf5.lib hdf5_cpp.lib 4. C/C -预处理器定义 H5_BUILT_AS_DYNAMIC_LIB; 注意 使用 hdf5 用于 训练 过程 void dataToMat(vector<Lan…

HDF5 学习总结1

目录 一 HDF5简介 1.1 HDF5背景 1.2 抽象数据模型 1.2.1 File 1.2.2 Group 1.2.3 Dataset 1.2.4. Dataspace 1.2.5. Datatype 1.2.6. Attribute 1.2.7. Property List 1.2.8. Link 一 HDF5简介 1.1 HDF5背景 HDF5:(Hierarchical Data Format)是由美国伊利诺伊大…

HDF5 windows编译 release版本、Debug版本

由于最近急需的一个项目&#xff0c;需要hdf5库&#xff0c;误打误撞&#xff0c;编译成功。特此记录 1、下载源代码 官网下载地址&#xff1a;https://portal.hdfgroup.org/display/support/HDF51.12.2#files 找到如下地址&#xff0c;本人电脑有cmake软件&#xff0c;我下…

[HDF5]如何使用CMake一起编译自己的代码和HDF5库

以一个实际项目来举例 目录 一.目录结构 二.CMakeLists.txt内容 三.执行CMakeLists命令 一.目录结构 1.build放CMake执行后生成的所有的内容&#xff0c;包括最后的工程或可执行文件等; 2.include放工程的头文件&#xff0c;以及HDF5的头文件&#xff0c;可以直接把HDF5中…

HDF5简介

1、介绍 HDF 是用于存储和分发科学数据的一种自我描述、多对象文件格式。HDF 是由美国国家超级计算应用中心&#xff08;NCSA&#xff09;创建的&#xff0c;以满足不同群体的科学家在不同工程项目领域之需要。HDF 可以表示出科学数据存储和分布的许多必要条件。HDF 被设计为&…

HDF5数据的打包与使用(以图像数据为例)

文章目录 1 什么是HDF5数据2 HDF5数据格式的生成3 HDF5数据的查看 注&#xff1a;此篇内容主要作为使用PyTorch构建GAN生成对抗网络博客中&#xff0c;HDF5数据类型的补充介绍。 1 什么是HDF5数据 HDF5 数据是存储在一种名为 Hierarchical Data Format version 5 (HDF5) 的二进…

HDF5-简介

HDF&#xff08;Hierarchical Data Format&#xff09;是一种设计用于存储和组织大量数据的文件格式&#xff0c;最开始由美国国家超算中心研发&#xff0c;后来由一个非盈利组织HDF Group支持.HDF支持多种商业及非商业的软件平台&#xff0c;包括MATLAB、Java、Python、R和Jul…

HDF5到底是什么

HDF5到底是什么 《Python和HDF 5大数据应用》——1.2 HDF5到底是什么-阿里云开发者社区 1.2 HDF5到底是什么 HDF5是一种存储相同类型数值的大数组的机制&#xff0c;适用于可被层次性组织且数据集需要被元数据标记的数据模型。 它跟SQL风格的关系型数据库区别相当大&…

HDF5快速上手全攻略

HDF5快速上手全攻略 1. HDF5简介 Hierarchical Data Format(HDF)是一种针对大量数据进行组织和存储的文件格式。经历了20多年的发展&#xff0c;HDF格式的最新版本是HDF5&#xff0c;它包含了数据模型&#xff0c;库&#xff0c;和文件格式标准。以其便捷有效&#xff0c;移植…

Macbook Pro笔记本双系统MacOS和Windows切换默认启动

一、开机切换 开机时&#xff0c;按住option键不要动&#xff0c;等待Macbook Pro出现以下界面&#xff0c;选择你想开机的系统即可。 &#xff08;BootCamp就是Windows&#xff09; 二、默认切换&#xff0c;这里分两种情况 1&#xff09;默认MacOS开机&#xff0c;切换到W…

笔记本双系统Windows10/Deepin15.11体验记录【Deepin15.11体验记录】第一天

笔记本双系统Windows10/Deepin15.11体验记录 【Deepin15.11体验记录】第一天 今天我试着将笔记本安装了第二个系统&#xff08;基于Linux的Deepin15.11系统&#xff09;&#xff0c;非常成功。之前接触过虚拟机里的Redhat Linux&#xff0c;但是那种是多年前的版本&#xff0…

华硕ROG枪神配置Ubuntu双系统

华硕ROG枪神配置Ubuntu双系统 最近笔记本刚到&#xff0c;华硕ROG枪神6plus&#xff0c;12900HRTX3060&#xff08;没错&#xff0c;最低配&#xff09;&#xff0c;想着配置一下Ubuntu系统&#xff0c; 但是网上没有相关参考教程&#xff0c;我自己在下面步骤4设置硬盘启动方…

各笔记本安装双系统遇到的问题

目录 联想Y9000P2023款安装ubuntu出现efi usb device has been blocked by the current security policy导致无法进入安装目录 ​编辑 Thinkpad p15 gen1安装双系统遇到的问题 回忆安装xubuntu20.04LTS出现的问题和解决办法&#xff1a; Thinkpad p15 gen1 合盖关机的设置…

苹果笔记本安装Win10双系统+分区教程《原创完整精华版》

苹果笔记本安装Win10双系统分区教程《完整精华版》 写在前面&#xff1a;1.此款笔记本已测试支持安装Win10 1909版本、1903版本。建议安装比较新的Win10版本。2.此教程是先装Win10系统&#xff0c;再进苹果系统分区。最初我想是先分区&#xff0c;再安装&#xff0c;可无论如何…

红米笔记本linux系统版本,小米笔记本安装Win10+Ubuntu16.04 LTS 双系统

安装Win10+Ubuntu16.04 LTS 双系统(持续更新:Ubuntu安装N卡驱动,续航+2小时) 原贴:http://bbs.xiaomi.cn/t-13391152 (来自小米社区玩机教程) 完成图: 目标:安装Win10 + Ubuntu16.04 LTS 双系统 电脑:小米Air 13.3 高配版 工具: 硬件:U盘(2G就够,镜像包解压后文件大小为1.…

dell笔记本安装Ubuntu20.04双系统+cuckoo布谷鸟沙箱

windows下安装Ubuntu20.04双系统cuckoo布谷鸟沙箱 本篇文章主要是在Ubuntu20.04系统上搭建cuckoo沙箱&#xff0c;之前曾尝试在VMware虚拟机里建立Ubuntu&#xff0c;然后再在Ubuntu虚拟机里安装vbox虚拟机&#xff0c;然后搭建沙箱&#xff0c;但是这种虚拟机里安装虚拟机的想…

戴尔笔记本安装双系统(win10+ubuntu20.04)避坑记录

戴尔笔记本安装双系统&#xff08;win10ubuntu20.04&#xff09;避坑记录 从最开始DIY到用联想服务器&#xff0c;再到现在的戴尔某笔记本&#xff0c;一路走来都是从csdn上的各路大神帖子上学习安装&#xff0c;帮助很大&#xff0c;避免了很多弯路&#xff1b;但也有一些不太…

华为笔记本linux双系统,真的有必要吗?华为笔记本搭载双系统

近段时间有消息称&#xff0c;华为将会推出一款12.9寸笔记本电脑将会采用PC、平板二合一的设计&#xff0c;同时搭载Intel平台并且支持Windows 10与Android双系统&#xff0c;日常状态下是运行Windows 10的笔记本电脑&#xff0c;而将键盘拆开后则会变为一台Android平板&#x…

苹果电脑装双系统利弊有哪些

很多人购买了苹果电脑以后,很多用户使用MAC系统还是很不习惯,都担心许多Windows软件不能使用了。那么苹果电脑装双系统有什么好处和坏处呢?很多用户都不清楚苹果电脑装双系统利弊在哪&#xff0c;今天&#xff0c;小编就把苹果电脑装双系统利弊有哪些的介绍分享给大家。 更多…

小米笔记本双固态硬盘安装win10+ubantu20双系统 实录

一.基本信息 电脑型号&#xff1a;小米笔记本Pro15.6 显卡型号&#xff1a;NVIDIA GeForce GTX 1050 Max-Q 原装固态硬盘&#xff1a;英特尔 SSDPEKNW010T8 容量&#xff1a;1024G 加装固态硬盘&#xff1a;三星860 EVO M.2接口&#xff08;SATA总线&#xff09; 容量&a…