基于MatlabHDF文件读取方法.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于MatlabHDF文件读取方法

基于MatlabHDF文件读取方法   [摘 要]HDF是一种广泛用于科学数据共享的国际标准数据格式,正确高效地读取HDF文件数据是对其进行应用的基础。本文首先介绍了HDF文件格式,在此基础上,详细给出了Matlab读取HDF文件的简易方法和代码。   [关键词]HDF格式;Matlab;科学数据   中图分类号:TP319 文献标识码:A 文章编号:1009-914X(2014)47-0312-01   1 引言   科学研究需要对大量的数据进行处理,而这些科学数据有着很多不同的存储形式和标准格式。HDF是美国国家高级计算机应用中心(NCSA)为了满足各种领域研究需要而开发出的一种能高效存储和分发科学数据的新型数据格式。HDF的数据格式是一种分层式数据管理结构,是一个能够自我描述、多目标、用于科学数据存储和分发的数据格式。HDF格式文件被广泛运用于科学数据共享,是目前国际上数据共享应用较广泛的文件格式。正确高效地读取HDF文件里面的数据,是共享HDF格式科学数据的前提。目前比较常用的读取HDF文件的方式是使用IDL、C和Fortran等传统语言工具和GrADS等绘图软件。但是这些读取方式对于非专业人员来说都有一定的难度,不容易在短期内快速掌握,而利用Matlab读取HDF格式数据则相对简单高效。   2 HDF文件介绍   HDF是由伊利诺斯州大学的美国国家超级计算应用中心(NCSA)于1987年开发的一套文件格式,并包括对HDF文件进行操作的函数库。简单说来,HDF是容许共享跨平台的自我描述文件。它的跨平台性,允许人们在不同的操作系统上操作HDF文件而不用对其进行格式转换;它的自我描述性意味着一个数据集,例如一个多维的数字序列,有逻辑上与它联系的额外的元数据,这些元数据用来描述诸如数据集的名称、维数、每维上的元素个数等等。   1993年美国国家航空航天局(NASA)决定把HDF格式作为存储和发布EOS数据的标准格式,于是NASA和NCSA在HDF标准的基础上,开发了一种专门用于存储EOS产品的HDF格式,称之为HDF-EOS。HDF-EOS是HDF的扩展,它主要扩充了两项功能:一是提供了一种系统宽搜索服务方式,它能在没有读文件本身的情况下搜索文件内容;二是提供了有效的存储地理定位数据,将科学数据与地理点捆绑在一起。目前国内由于MODIS接收站的处理系统不同,因此采用这两种格式的都有。但是,这并不妨碍我们用Matlab对其进行处理,因为Matlab对这两种数据格式都能很好地支持。   3 Matlab读取HDF文件的方法   Matlab提供了三种从HDF或者HDF-EOS数据集中读取数据的方法:HDF输入工具、Matlab高级输入函数以及Matlab命令行用法(低级函数用法)。下面分别介绍这三种方法。   ①HDF输入工具法,语法为hdftool   HDFImportTool是一个可视化的HDF文件输入工具。此工具可以同时打开多个HDF或HDF-EOS文件。打开文件,选定一个要打开的数据集(DataSet),再选择好相应的参数后,点击Import,即可把选择的数据输入Matlab工作区。因为是可视化的工具,所以该方法简单直观,操作简便易行。   ②使用Matlab高级输入函数hdfread   hdfread这个函数隐藏了HDF库中规定的低级函数所必须的许多操作细节。例如,如果使用低级函数从HDF文件中读取数据,需要打开HDF文件,选取数据集,读取数据集中的数据,最后关闭文件这样一系列的操作过程,但是hdfread函数已经把这些所有的过程都包括在内了。因此使用起来相对简单一些。hdfread函数的常用法是:   data=hdfread(filename,dataset);   其中data返回指定数据集中的所有数据,dataset的名称可以由hdfinfo函数获得。   ③使用Matlab命令行接口   Matlab用一个单独的低级函数来代替HDF库函数中的一系列应用程序接口(API)的子程序,只要给这个函数的第一个参数指定不同的值,就能相应的使用相当于HDFAPI中不同子程序的功能。这些低级函数的使用需要指定的过程。   下面就以hdfsd这个函数的使用来详细说明。   根据前面所述的流程,首先必须打开HDF文件,函数的语法为:   sd_id=hdfsd(‘start’,‘mydata.hdf’,‘read’);   上式中sd_id返回一个正值表示文件打开成功;返回-1则表示打开文件不成功。在下面的用法中sd_id将用来表示mydata.hdf这个文件。read表示读文件。   其次,要选择数据集,用   sds_id=hdfsd(‘select’,sd_id,sds_idx);   sds_id将在下面的用

文档评论(0)

fangsheke66 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档