主要内容

工作与HDF5虚拟数据集(VDS)

概述

HDF5虚拟数据集(VDS)特性允许您访问的数据的集合HDF5文件作为一个单一的、统一的数据集,无需修改数据如何存储在原始文件。虚拟数据集可以有无限的维度和映射到源数据集与无限的维度。这个映射允许一个虚拟数据集增长随着时间的推移,作为其基础源数据集大小的变化。

VDS的特性是在HDF5库1.10版本中引入的。VDS公司使用,你必须熟悉HDF5 VDS公司的编程模型。有关更多信息,请参见HDF5虚拟数据集的文档HDF集团的网站。

请注意

MATLAB®版本早于R2021b不能读HDF5虚拟数据集。

创建一个虚拟数据集

遵循这些一般步骤为构建一个虚拟数据集:

  1. 创建数据集组成VDS公司(源数据集)(可选)。

  2. 创建VDS公司。

    1. 定义一个数据类型。

    2. 定义一个dataspace。

    3. 定义数据集创建属性列表。

    4. 从源数据元素映射到VDS的元素。

      1. 遍历源数据集。

        1. 源数据集选择元素(源选择)。

        2. 选择元素在虚拟数据集(目的地选择)。

        3. 目的地的选择映射到源选择使用一个数据集创建属性列表调用。

      2. 迭代结束。

    5. 调用H5D.create使用定义的属性。

  3. VDS公司作为常规HDF5数据集的访问。

  4. 完成时关闭VDS公司。

请注意

HDF5 C库使用C风格的多维数组排序,而MATLAB使用FORTRAN-style排序。有关更多信息,请参见报告数据集的维度

使用远程存储虚拟数据集

您可以使用MATLAB低级HDF5函数来创建和读取虚拟数据集存储在远程位置,如Amazon S3™和Windows Azure®团服务。使用高级HDF5函数来读取和访问信息在虚拟数据集存储在远程位置。

当访问一个虚拟数据集存储在远程位置,您必须指定完整路径使用统一资源定位符(URL)。例如,显示一个HDF5文件的元数据存储在Amazon S3。

h5disp (s3: / / bucketname path_to_file / my_VDSdata.h5 ');

更多信息建立MATLAB来访问您的在线存储服务,明白了使用远程数据

从不同大小的数据集创建虚拟数据集

创建一个虚拟数据集的数据集HDF5不同大小和失配组和数据集的名称。高程数据从MATLAB生成的三个数据集山峰函数。

使用三个数据集包含高程数据来重建一个更大的、更完整的地形图。三个数据集不相交,这意味着空间数据丢失以及一个或多个共享维度,不同的形状和大小。

重建出三种数据集的地形轮廓。采样点的三个数据集显示在地形概要文件根据他们的地理坐标。在这两个情节,x和y轴表示经度和纬度,分别与纬度增加在y方向上。

figure_01a.pngfigure_01b_v3.png

显示信息的三个数据集文件data_W.h5,data_NE.h5,data_SE.h5。的h5disp函数显示数据集的信息,包括它们的名称、数据类型,它们所属的维度,和组。

h5disp (“data_W.h5”)
HDF5 data_W。h5集团' / ' /数据的数据集“海拔”大小:20 x10最大尺寸:20 x10数据类型:H5T_IEEE_F64LE(双)ChunkSize:[]过滤器:没有FillValue: 0.000000
h5disp (“data_NE.h5”)
HDF5 data_NE。h5组' z ' ' / '数据集大小:11 x12最大尺寸:11 x12数据类型:H5T_IEEE_F64LE(双)ChunkSize:[]过滤器:没有FillValue: 0.000000
h5disp (“data_SE.h5”)
HDF5 data_SE。h5集团“/”数据集的海拔高度尺寸:9 * 13最大尺寸:9 * 13数据类型:H5T_IEEE_F64LE(双)ChunkSize:[]过滤器:没有FillValue: 0.000000

创建一个dataspace并创建虚拟数据集的属性列表。然后,每个数据集映射到虚拟dataspace使用c风格的尺寸订购和从零开始的索引。

例如,左下角的东北地区的数据块对应MATLAB指数(十11)。将这些指标c风格的命令,从零开始的指数,指数(十11)和减去价值1。由此产生的开始索引9 [10]

%定义填充值和指定文件访问属性列表标识符。fillValue =南;faplID = H5P.create (“H5P_FILE_ACCESS”);%的虚拟数据集创建的文件。vdsFileID = H5F.create (“data_VDS.h5”,“H5F_ACC_TRUNC”,“H5P_DEFAULT”,faplID);%定义数据类型和dataspace。datatypeID = H5T.copy (“H5T_NATIVE_DOUBLE”);vdsDataspaceID = h5。create_simple (20 [24], []);%初始化虚拟数据集创建属性列表和虚拟布局和填补价值。vdsDcplID = H5P.create (“H5P_DATASET_CREATE”);H5P.set_layout (vdsDcplID“H5D_VIRTUAL”);H5P.set_fill_value (vdsDcplID datatypeID fillValue);%执行完整的数据集映射三个单独的源数据集。%从data_W地图/数据/高度的。h5虚拟数据集。srcDataspaceID_W = h5。create_simple (20 [10], []);H5S.select_hyperslab (vdsDataspaceID“H5S_SELECT_SET”[0 0]、[][],[10]20);H5P。set_virtual (vdsDcplID vdsDataspaceID,“data_W.h5”,/数据/高度的,srcDataspaceID_W);从data_NE % / z的地图。h5虚拟数据集。srcDataspaceID_NE = h5。create_simple (11 [12], []);H5S.select_hyperslab (vdsDataspaceID“H5S_SELECT_SET”9[10]、[][],[12]11日);H5P.set_virtual (vdsDcplID vdsDataspaceID,“data_NE.h5”,' / z ',srcDataspaceID_NE);从data_SE % /海拔高度的地图。h5虚拟数据集。srcDataspaceID_SE = h5。create_simple (2 9 [13], []);H5S.select_hyperslab (vdsDataspaceID“H5S_SELECT_SET”[11 0],[][],[9]13);H5P.set_virtual (vdsDcplID vdsDataspaceID,“data_SE.h5”,/海拔高度的,srcDataspaceID_SE);

创建HDF5文件和虚拟数据集/高程,然后关闭所有打开的资源。

% H5D打电话。创建使用定义的属性。vdsDatasetID = H5D.create (vdsFileID,' /海拔'datatypeID vdsDataspaceID,“H5P_DEFAULT”vdsDcplID,“H5P_DEFAULT”);%关闭开放的资源。H5D.close (vdsDatasetID);H5S.close (srcDataspaceID_SE);H5S.close (srcDataspaceID_NE);H5S.close (srcDataspaceID_W);H5P.close (vdsDcplID);H5S.close (vdsDataspaceID);H5T.close (datatypeID);H5F.close (vdsFileID);H5P.close (faplID);

读虚拟数据集和阴谋。

由此产生的情节类似于原始地形图的情节,除了地区数据丢失是由于数据集不相交的。

%使用底层接口读取海拔。vdsFileID = H5F.open (“data_VDS.h5”,“H5F_ACC_RDONLY”,“H5P_DEFAULT”);vdsDatasetID = H5D.open (vdsFileID,' /海拔',“H5P_DEFAULT”);海拔= H5D.read (vdsDatasetID,“H5ML_DEFAULT”,“H5S_ALL”,“H5S_ALL”,“H5P_DEFAULT”);H5D.close (vdsDatasetID);H5F.close (vdsFileID);contourf(高程、10);

显示虚拟数据集文件的内容。

h5disp (“data_VDS.h5”)
HDF5 data_VDS。h5集团“/”数据集“海拔”大小:20 x24最大尺寸:20 x24数据类型:H5T_IEEE_F64LE(双)ChunkSize:[]过滤器:没有FillValue:南

你可以在虚拟数据集执行I / O操作。例如,读hyperslab数据/高程数据集使用h5read高级接口函数。

示例= h5read (“data_VDS.h5”,' /海拔'[1],[5 - 6],[4]4日)
示例=5×60.0007 0.0102 0.0823 0.3265 0.0765 0.0059 0.0028 0.0331 0.3023 2.9849 0.1901 0.4741 0.1661 3.3570 2.5482 1.3171 4.8474 3.3676 0.1915 3.9606 1.1585 0.9892 3.9113 2.5722 0.0151 0.2633 1.0373 2.5380 0.9625 0.2401

另请参阅

||