主要内容

hdfread

从HDF4或HDF-EOS文件中读取数据

句法

Data = hdfread(filename, datasetname)
data = hdfread (hinfo)
data = hdfread(…,参数值,…)
data = hdfread(文件名,eosname,param,值,...)
[数据,地图] = HDFREAD(...)

描述

Data = hdfread(filename, datasetname)返回指定的数据集中的所有数据datasetname指定的HDF4或HDF-EOS文件文件名.要确定HDF4文件中数据集的名称,请使用hdfinfo功能。

笔记

hdfread可在版本4.x HDF文件或版本2.x HDF-EOS文件上使用。从HDF5文件中读取数据,使用h5read

data = hdfread (hinfo)返回结构指定的数据集中的所有数据h福,由hdfinfo功能。指定该字段h福涉及特定类型的数据集的结构,并使用索引来指定多于一个的数据集。看指定要读取的数据集为更多的信息。

data = hdfread(…,参数值,…)根据指定的参数和值对返回数据的子集。请参见下表查找不同类型数据集的有效参数和值。

data = hdfread(文件名,eosname,param,值,...)由指定的HDF-EOS点、网格或条带子集数据字段EOSname

[数据,地图] = HDFREAD(...)返回映像数据和Colormap.地图用于8位光栅图像。

子集参数

属性可以使用的子集参数如下所示hdfread函数用于某些类型的HDF4数据。这些数据类型是

请注意以下几点:

  • 如果参数需要多个值,则使用单元格数组存储这些值。例如,'指数'参数需要三个值:开始步行, 和边缘.将这些值括在花括号中作为单元格数组。

    HDFREAD(...,'索引',{start,stride,边缘})
  • 所有的索引值都是基于1的。


HDF科学数据(SD)数据集的子集参数

当你使用HDF SD文件时,hdfread金宝app支持此表中列出的参数。

范围

描述

'指数'

三元素单元阵列,{开始,步幅,边缘},指定要从数据集中读取的位置、范围和值

  • 开始-一个基于1的数组,指定文件中开始读取的位置

    默认:1,从每个维度的第一个元素开始。指定的值不能超过数据集的任何维度的大小。

  • 步行—基于1的数组,指定读取值之间的间隔

    默认:1,读取数据集的每个元素。

  • 边缘—基于1的数组,指定要读取的每个维度的长度

    默认值:包含相应维度长度的数组

例如,这段代码读取数据集SDS例子从HDF文件example.hdf..的'指数'参数指定hdfread在每个维度的开头开始读取数据,读取直到每个维度的末尾,但仅在第一维中读取每个其他数据值。

data = hdfread('的例子。SDS hdf”、“例子”、“指数”,{2 [1],[][]})

HDF Vdata集的子集参数

当您使用HDF vdata文件时,hdfread金宝app支持这些参数。

范围

描述

'田野'

指定要读取的字段名称的字符向量或字符串标量。当指定多个字段名时,使用字符向量的单元格数组或字符串数组。

'firstrocord'

基于1的数字,指定从哪个记录开始读取

'numrecords'

指定要读取的记录总数

例如,这段代码读取Vdata集例子Vdata从HDF文件example.hdf.

数据= hdfread('example.hdf','示例vdata','firstrocord',2,'numrecords',5)

HDF-EOS网格数据的子集参数

当您使用HDF-EOS网格数据时,hdfread金宝app支持三种类型的参数:

  • 必需的参数

  • 可选参数

  • 互斥参数 - 您只能在通话中指定这些参数之一hdfread,您无法与任何可选参数结合使用这些参数。

    范围

    描述

    所需的参数

    '田野'

    指定要读取的字段的字符向量或字符串标量。只能为Grid数据集指定一个字段名。

    可选参数

    '指数'

    三元素单元阵列,{开始,步幅,边缘},指定要从数据集中读取的位置、范围和值

    开始- 一个数组,指定文件中的位置开始阅读

    默认:1,从每个维度的第一个元素开始。这些值不能超过数据集的任何维度的大小。

    步行—指定读取值之间的间隔的数组

    默认:1,读取数据集的每个元素。

    边缘- 一个数组,指定要读取的每个维度的长度

    默认值:包含相应维度长度的数组

    '插'

    双元素单元阵列,{经纬度},指定定义用于双线性插值的区域的经纬度点。每个元素都是一个长度为n的向量,指定经度和纬度坐标。

    '像素'

    双元素单元阵列,{经纬度},指定定义区域的经纬度坐标。每个元素都是一个长度为n的向量,指定经度和纬度坐标。该区域被转换为像素行和列,原点位于网格的左上角。

    注意:这是读取a的像素等同物“盒子”地区。

    '瓦'

    向量指定要读取的平铺坐标,用于支持平铺的HDF-EOS网格文件金宝app

    可选参数

    “盒子”

    双元素单元阵列,{经纬度},指定定义区域的经纬度坐标。经度纬度每个两个元素的向量指定经度和纬度坐标。

    '时间'

    双元素单元阵列,(开始停止),在那里开始停止数字是否指定一段时间的开始和结束点

    “垂直”

    双元素单元阵列,{维度,射程}

    -指定要读取的数据集字段的名称的字符向量或字符串标量。只能为Grid数据集指定一个字段名。

    范围-二元数组,指定子集的最小和最大范围。如果那是维度名称,然后范围指定要提取的元素范围。如果是一个字段名称,然后范围指定要提取的值的范围。

    “垂直”子集可以单独使用,也可以与之结合使用“盒子”'时间'.要沿多个维度对区域进行子集,在一次调用中最多可以使用8次垂直子集hdfread

例如,

数据= hdfread('grid.hdf','parg grid','fields','ice_temp','index',{[5 10],[],[15 20]})

HDF-EOS点数据的子集参数

当您使用HDF-EOS点数据时,hdfread有两个必需参数和三个可选参数。

范围

描述

必需的参数

'田野'

包含要读取的数据集字段名称的字符向量或字符串标量。对于多个字段名,使用字符向量的单元格数组或字符串数组。

“水平”

在HDF-EOS点数据集中指定读取哪个级别的基于1的数字

可选参数

“盒子”

双元素单元阵列,{经纬度},指定定义区域的经纬度坐标。经度纬度每个两个元素的向量指定经度和纬度坐标。

'romgeNumbers'

指定要读取的记录号的向量

'时间'

双元素单元阵列,(开始停止),在那里开始停止是指定一段时间的开始和端点的数字

例如,

HDFREAD(...,'字段',{Field1,Field2},...'级别',级别,'Recordnumbers',[1:50,200:250])

HDF-EOS条带数据的子集参数

当您使用HDF-EOS Swath数据时,hdfread金宝app支持三种类型的参数:

  • 必需的参数

  • 可选参数

  • 互相排他性

您只能在呼叫中使用一个互斥的参数之一hdfread,您无法与任何可选参数结合使用这些参数。

范围

描述

所需的参数

'田野'

包含要读取的数据集字段名称的字符向量或字符串标量。只能为一个Swath数据集指定一个字段名。

可选参数

'指数'

三元素单元阵列,{开始,步幅,边缘},指定要从数据集中读取的位置、范围和值

  • 开始- 一个数组,指定文件中的位置开始阅读

    默认:1,从每个维度的第一个元素开始。这些值不能超过数据集的任何维度的大小。

  • 步行—指定读取值之间的间隔的数组

    默认:1,读取数据集的每个元素。

  • 边缘- 一个数组,指定要读取的每个维度的长度

    默认值:包含相应维度长度的数组

'时间'

三元素单元阵列,{开始,停止,模式},在那里开始停止指定一段时间的开始和端点,模式是一个字符向量或字符串标量,它定义了在区域中包含交叉迹的标准。如果满足下列条件中的任何一个,则交叉轨道在一个区域内:

  • 它的中点在方框内(mode ='midpoint')。

  • 终端在框内(模式=“端点”)。

可选参数

“盒子”

三元素单元阵列,{经度,纬度,模式}指定定期和纬度坐标定义区域。经度纬度是指定经度和纬度坐标的两个元素向量。模式是一个字符向量或字符串标量,它定义了在区域中包含交叉迹的标准。如果满足下列条件中的任何一个,则交叉轨道在一个区域内:

  • 它的中点在方框内(mode ='midpoint')。

  • 终端在框内(模式=“端点”)。

  • 方框内任意点(mode ='AnyPoint')。

“垂直”

双元素单元阵列,{维度,射程}

  • 是一个字符向量或字符串标量,指定尺寸名称或字段名称,以便通过。

  • 范围是一个双元素矢量,指定子集的最小和最大范围。如果那是维度名称,然后范围指定要提取的元素范围。如果是一个字段名称,然后范围指定要提取的值的范围。

    “垂直”子集可以单独使用,也可以与之结合使用“盒子”'时间'.要沿多个维度对区域进行子集,在一次调用中最多可以使用8次垂直子集hdfread

例如,

HDFREAD('swath.hdf','示例swath','fields','温度',...'time',{5000,6000,'midpoint'})

例子

全部收缩

指定HDF文件的名称和数据集的名称。这个示例读取名为温度从样例HDF文件。

数据= hdfread (“sd.hdf”“温度”);

调用hdfinfo检索有关HDF文件内容的信息。

fileinfo = hdfinfo(“sd.hdf”
fileinfo =.结构与字段:filename:'/mathworks/devel/bat/bdoc21a/build/matlab/toolbox/matlab/imagessci/sd.hdf'属性:[1x1 struct] sds:[1x2 struct] vdata:[1x1 struct]

从返回的数据中提取包含要导入的特定数据集信息的结构hdfinfo.此示例使用该结构SDS.用于检索科学数据集的字段。

sds_info = fileinfo.sds(2)
sds_info =结构与字段:文件名:“mathworks /猛击/棒/ Bdoc21a /构建/ matlab工具箱/ matlab / imagesci / sd。hdf的类型:科学数据集”的名字:“温度”排名:2数据类型:“双”属性:[1 x11 struct] dim: [2 x1 struct]标签:{}描述:{}指数:1

将此结构传递给hdfread导入数据集中的数据。

data = hdfread (sds_info);

从HDF-EOS全局网格字段中读取数据,Tbeceanrain,在示例文件中,example.hdf.

data1 = hdfread (“example.hdf”“MonthlyRain”'田野'“TbOceanRain”);

读取北半球相同字段的数据。使用盒子参数指定该区域的经度和纬度坐标。

data2 = hdfread(“example.hdf”“MonthlyRain”...'田野'“TbOceanRain”...“盒子”, {[0 360],[0 90]});

检索关于示例文件的信息,example.hdf.

fileinfo = hdfinfo(“example.hdf”);

检索有关科学数据集的信息example.hdf.

data_set_info = fileinfo.SDS;

检查数据集的大小。

data_set_info.dims.size.
ans = 16
ans = 5

使用使用的数据集中读取数据的子集'指数'参数与hdfread.此示例指定启动索引[3],值之间的间隔为1 ([]表示默认值1),长度为10行2列。

data = hdfread(data_set_info,'指数',{[3 3],[],[10]});数据(:,1)
ans =.10x1 int16列向量7 8 9 10 11 12 13 14 15 16
数据(:,2)
ans =.10x1 int16列向量8 9 10 11 12 13 14 15 16 17

使用Vdata返回的信息中的字段hdfinfo读取数据的三个字段,Idx临时, 和Dewpt

s = hdfinfo (“example.hdf”);data = hdfread (s.Vdata (1),'田野',{“Idx”'temp''dewpt'})
数据=3×1单元阵列{[11 4 3 4 5 6 7 8 9 10]}} {[0 12 3 5 10 -1 3 0 2 1]}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}} {[5 5 7 11 7 10 4 14 4 8]}

也可以看看

在R2006A之前介绍