关于java库读取hdf5数据集的信息

本文目录一览:

Matlab 操作 HDF5文件

在使用Matlab对数据进行预处理时,遇到了内存不足的问题,因为数据量太大,在处理完成以前内存已经爆满。如果使用Matlab的 .m 文件对文件进行存储的话,则需要将数据分割成多个文件,对后续的处理造成了不便。HDF5文件则是一种灵活的文件存储格式,有一个最大的好处就是在Matlab的处理过程中可以对它进行扩展写入,也就是说不是所有数据处理完以后一次写入,而是边处理边写入,极大的降低了对系统内存的要求。

HDF5文件类似与一个文件系统,使用这个文件本身就可以对数据集(dataset)进行管理。例如下图所示,HDF5文件中的数据集皆存储根目录 / ,在根目录下存在多个 group ,这样一些 group 类似与文件系统的文件夹,在它们可以存储别的 group ,也可以存储数据集。

使用Matlab创建HDF5文件的函数是 h5create ,使用如下:

filename 为 h5 文件的文件名(不知道什么问题,在我的电脑上使用时,这个函数无法指定路径)。

datasetname 则为数据集的名字,数据集名称必须以 / 开头,比如 /G 。

[30,30,3,inf] 位数据集的大小,比如我的数据集为 30×30 大小的彩色图像,并且我希望数量能够扩展,那么就可以指定最后以为度为inf,以表示数量不限。

Datatype 为数据类型

ChunkSize 为数据存储的最小分块,为了让数据能够具有扩展性,所以为新来的数据分配一定的空间大小,对于一个非常大的数据,这个值设置大一点比较好,这样分块就会少一点。比如我的数据集中, 30×30 大小的彩色图像大概有10万个左右,那么1000个存储在一起较为合适,则 chunksize 设置为:[30,30,3,1000]。

在创建了hdf5文件和数据集以后,则可以对数据集进行写操作以扩展里面的数据。使用Matlab写入HDF5文件的函数是 h5write ,使用如下:

fileName : hdf5文件名

datasetName :数据集名称,比如 /G

data :需要写入的数据,数据的维度应该与创建时一致,比如,设置的数据集大小为 [30,30,3,inf] ,那么这里的 data 的前三个维度就应该是 [30, 30, 3] ,而最后一个维度则是自由的

start :数据存储的起点,如果是第一次存,则应该为 [1, 1, 1, 1] (注意数据维度的一致性),如果这次存了10000个样本,也就是[30,30,3,10000],那么第二次存储的时候起点就应该为[1,1,1,10001]

count 存储数据的个数,同样要根据维度来(其实就是数据的维度),这里为[30,30,3,10000]

Matlab中可以使用 h5info 函数来读取HDF5文件的信息:

然后通过解析fileInfo结构,则可以得到HDF5文件中的数据集名称、数据集大小等等必要信息。

Matlab中可以使用 h5read 函数来读取HDF5文件:

filename :HDF5文件文件名

datasetname :数据集名称

start :从数据集中取数据的其实位置

count :取的数据数量

还是以上面的30×30的彩色图像为例,如果每次需要取1000个,那么第一次取时,start应该设置为[1, 1, 1, 1] ,count设置为:[30, 30 ,3 1000]。第二次取值时,start则应该设置为[1, 1, 1, 1001],count则设置为:[30, 30, 3, 1000]。

使用java API如何获取给定路径的HDF文件结构

HDFS是Hadoop生态系统的根基,也是Hadoop生态系统中的重要一员,大部分时候,我们都会使用Linux shell命令来管理HDFS,包括一些文件的创建,删除,修改,上传等等,因为使用shell命令操作HDFS的方式,相对比较简单,方便,但是有时候,我们也需要通过编程的方式来实现对文件系统的管理。

比如有如下的一个小需求,要求我们实现读取HDFS某个文件夹下所有日志,经过加工处理后在写入到HDFS上,或者存进Hbase里,或者存进其他一些存储系统。这时候使用shell的方式就有点麻烦了,所以这时候我们就可以使用编程的方式来完成这件事了,当然散仙在这里使用的是原生的Java语言的方式,其他的一些语言例如C++,PHP,Python都可以实现,散仙在这里不给出演示了,(其实散仙也不会那些语言,除了刚入门的Python) 。

hdf5文件下的文件夹怎么读取

如果有读写权限的,可以直接打开读取。

如果没有读写权限,按下面操作取得读写权限:

一、右键单击需要获取权限的文件或文件夹,点击“属性”,点击“属性”中的“安全”选项卡,点击“高级”按钮。

二、更改“所有者”,如果“所有者”已经是当前用户,则这一步可以跳过。进入高级安全设置,单击“所有者”后面的“更改”。

1、输入要获取权限的用户名,点击“检查名称”;

2、如果用户名比较复杂或不记得用户名,可以先点开“高级”,再点击“立即查找”进行查找用户,并在结果中找到并选中正确的用户名,点击确定;

3、已经识别正确用户名,再点击确定;

4、选中“替换子容器和对象的所有者”,再单击“确定”;权限对话框和属性对话框全部确定,完成所有者权限获取。

三、再次右键单击需要获取权限的文件夹,点击“属性”,点击“属性”中的“安全”选项卡,单击“组或用户名”列表下面的“编辑”,在弹出来的权限对话框中单击“添加”,选择用户后点击确定。回到权限对话框中,确认选中正确的用户名后,在下方的权限列表中选中“完全控制”;确定,完成文件夹权限获取。

备注:

获取“所有者”和“权限”,如果选中了“替换子容器和对象的所有者”,根据文件夹下文件数量不同,所需时间也不同,并且,如果此目录下有系统属性的目录或文件可能无法被修改,碰到此情况跳过即可。

转-matlab读写hdf5

Matlab读写hdf5数据

%Matlab中几种读写hdf5数据的函数

clear;

clc;

close all;

%—————————————————————————————————————

%第一种,包括”hdf5info”,”hdf5read”和”hdf5write”等函数

%读取hdf5数据

SdsData = hdf5read(‘E:\test.h5′ ,’/SDSName’);

%写hdf5数据

O2Adetails1.Location =’/GroupName’;

O2Adetails1.Name = ‘SdsName’;

%写属性

attr = ‘0~255’;

attr_details.Name = ‘units’;

attr_details.AttachedTo = ‘/GroupName/SdsName’;

attr_details.AttachType = ‘dataset’;

attr1 = ‘0~255’;

attr_details1.Name = ‘DESCRIPTION’;

attr_details1.AttachedTo = ‘/GroupName/SdsName’;

attr_details1.AttachType = ‘dataset’;

hdf5write(‘E:\result.h5′, O2Adetails1, SdsData, attr_details, attr,attr_details1, attr1,’WriteMode’, ‘overwrite’);

%—————————————————————————————————————

%第二种,包括”h5create”,”h5disp”,”h5info”,”h5read”,”h5readatt”,”h5write”和”h5writeatt”等函数

%h5create(filename,datasetname,size,Name,Value),h5create必须制定数据集的维数,不好用

h5create(‘myfile.h5′,’/DS1’,[10 20]);

mydata = rand(10,20);

h5write(‘myfile.h5’, ‘/DS1’, mydata);

%—————————————————————————————————————

%第三种,比较好用,类似于idl中的hdf5读写,主要包括:H5F.*、H5G.*、H5D.*、H5A*、H5T.*、H5S.*等相关函数

fid = H5F.create(‘myfile.h5’);

type_id = H5T.copy(‘H5T_NATIVE_FLOAT’);

%HSCO2_O2A_ARP分组

group_id=H5G.create(fid,’HSCO2_O2A_ARP’,’H5P_DEFAULT’,’H5P_DEFAULT’,’H5P_DEFAULT’);

dims = [1016 8 6];

h5_dims = fliplr(dims);

h5_maxdims = h5_dims;

space_id = H5S.create_simple(3,h5_dims,h5_maxdims);

dset_id = H5D.create(group_id,’RadianceConversionO2A’,type_id,space_id,’H5P_DEFAULT’);

H5D.write(dset_id,’H5ML_DEFAULT’,’H5S_ALL’,’H5S_ALL’,’H5P_DEFAULT’,RadianceConversionO2A);

H5S.close(space_id);

H5T.close(type_id);

H5D.close(dset_id);

H5G.close(group_id);

H5F.close(fid);

h5disp(‘myfile.h5’);

原创文章,作者:NSNUY,如若转载,请注明出处:https://www.506064.com/n/128708.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
NSNUYNSNUY
上一篇 2024-10-03 23:25
下一篇 2024-10-03 23:25

相关推荐

  • Java JsonPath 效率优化指南

    本篇文章将深入探讨Java JsonPath的效率问题,并提供一些优化方案。 一、JsonPath 简介 JsonPath是一个可用于从JSON数据中获取信息的库。它提供了一种DS…

    编程 2025-04-29
  • java client.getacsresponse 编译报错解决方法

    java client.getacsresponse 编译报错是Java编程过程中常见的错误,常见的原因是代码的语法错误、类库依赖问题和编译环境的配置问题。下面将从多个方面进行分析…

    编程 2025-04-29
  • Python读取CSV数据画散点图

    本文将从以下方面详细阐述Python读取CSV文件并画出散点图的方法: 一、CSV文件介绍 CSV(Comma-Separated Values)即逗号分隔值,是一种存储表格数据的…

    编程 2025-04-29
  • Java Bean加载过程

    Java Bean加载过程涉及到类加载器、反射机制和Java虚拟机的执行过程。在本文中,将从这三个方面详细阐述Java Bean加载的过程。 一、类加载器 类加载器是Java虚拟机…

    编程 2025-04-29
  • Java腾讯云音视频对接

    本文旨在从多个方面详细阐述Java腾讯云音视频对接,提供完整的代码示例。 一、腾讯云音视频介绍 腾讯云音视频服务(Cloud Tencent Real-Time Communica…

    编程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介绍

    本文将详细介绍Java Milvus SearchParam withoutFields的相关知识和用法。 一、什么是Java Milvus SearchParam without…

    编程 2025-04-29
  • Python中读入csv文件数据的方法用法介绍

    csv是一种常见的数据格式,通常用于存储小型数据集。Python作为一种广泛流行的编程语言,内置了许多操作csv文件的库。本文将从多个方面详细介绍Python读入csv文件的方法。…

    编程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java语言中的一个版本,于2014年3月18日发布。本文将从多个方面对Java 8中某一周的周一进行详细的阐述。 一、数组处理 Java 8新特性之一是Stream…

    编程 2025-04-29
  • Java判断字符串是否存在多个

    本文将从以下几个方面详细阐述如何使用Java判断一个字符串中是否存在多个指定字符: 一、字符串遍历 字符串是Java编程中非常重要的一种数据类型。要判断字符串中是否存在多个指定字符…

    编程 2025-04-29
  • VSCode为什么无法运行Java

    解答:VSCode无法运行Java是因为默认情况下,VSCode并没有集成Java运行环境,需要手动添加Java运行环境或安装相关插件才能实现Java代码的编写、调试和运行。 一、…

    编程 2025-04-29

发表回复

登录后才能评论