![利用MATLAB讀取HDF格式數(shù)據(jù)的實(shí)用方法.doc_第1頁](http://file.renrendoc.com/FileRoot1/2019-12/15/7bfc372c-2c13-48f1-ae44-b67a17471244/7bfc372c-2c13-48f1-ae44-b67a174712441.gif)
![利用MATLAB讀取HDF格式數(shù)據(jù)的實(shí)用方法.doc_第2頁](http://file.renrendoc.com/FileRoot1/2019-12/15/7bfc372c-2c13-48f1-ae44-b67a17471244/7bfc372c-2c13-48f1-ae44-b67a174712442.gif)
![利用MATLAB讀取HDF格式數(shù)據(jù)的實(shí)用方法.doc_第3頁](http://file.renrendoc.com/FileRoot1/2019-12/15/7bfc372c-2c13-48f1-ae44-b67a17471244/7bfc372c-2c13-48f1-ae44-b67a174712443.gif)
![利用MATLAB讀取HDF格式數(shù)據(jù)的實(shí)用方法.doc_第4頁](http://file.renrendoc.com/FileRoot1/2019-12/15/7bfc372c-2c13-48f1-ae44-b67a17471244/7bfc372c-2c13-48f1-ae44-b67a174712444.gif)
免費(fèi)預(yù)覽已結(jié)束,剩余1頁可下載查看
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
利用MATLAB讀取HDF格式數(shù)據(jù)的實(shí)用方法基金項(xiàng)目:國家863項(xiàng)目(2008AA09Z104),自然基金項(xiàng)目(40706061)摘要 HDF是一種廣泛用于科學(xué)數(shù)據(jù)共享的國際標(biāo)準(zhǔn)數(shù)據(jù)格式,正確高效地讀取HDF文件數(shù)據(jù)是對(duì)其進(jìn)行應(yīng)用的基礎(chǔ)。本文首先介紹了HDF文件格式,以及幾種常用的HDF文件讀取方式和各自的優(yōu)缺點(diǎn)。在此基礎(chǔ)上,詳細(xì)給出了MATLAB讀取HDF文件的簡(jiǎn)易方法和代碼。最后,本文給出了利用MATLAB讀取NCEP數(shù)據(jù)的應(yīng)用實(shí)例。關(guān)鍵詞 HDF格式,MATLAB,科學(xué)數(shù)據(jù)A practical way to read HDF data with MATLABBai Long1、Lei Hui2、Zhang Xuan2(1.Nanjing University of Information Science & Technology, Nanjing, 210044; 2. State Key Laboratory of Satellite Ocean Environment Dynamics, Second Institute of Oceanography , State Oceanic Administration, Hangzhou, 310012, China)Abstract: HDF, the Hierarchical Data Format, is a widely-used international standard data format. Numerous scientific data have been written in HDF format for data exchange and sharing, so how to read the HDF data is the first and fundamental step for science research and application. In this paper, firstly, the brief introduction of HDF format is given, and merits and demerits of several common methods of HDF data reading are analysis. Then, a method to read HDF data with METLAB software is presented with the detail codes. Finally, an application example is given by reading the NCEP data with HDF data by the MATLAB.Abstract Key words:HDF Format, MATLAB, Scientific Data1 引 言科學(xué)研究需要對(duì)大量的數(shù)據(jù)進(jìn)行處理,而這些科學(xué)數(shù)據(jù)有著很多不同的儲(chǔ)存形式和標(biāo)準(zhǔn)格式。HDF是美國國家高級(jí)計(jì)算機(jī)應(yīng)用中心(NCSA)為了滿足各種領(lǐng)域研究需要而開發(fā)出的一種能高效存儲(chǔ)和分發(fā)科學(xué)數(shù)據(jù)的新型數(shù)據(jù)格式1。HDF的數(shù)據(jù)格式是一種分層式數(shù)據(jù)管理結(jié)構(gòu),是一個(gè)能夠自我描述、多目標(biāo)、用于科學(xué)數(shù)據(jù)存儲(chǔ)和分發(fā)的數(shù)據(jù)格式。簡(jiǎn)單來說,HDF格式文件是面向?qū)ο蟮淖悦枋鑫募?,它使得在不同的?jì)算機(jī)系統(tǒng)中分享數(shù)據(jù)成為可能。HDF文件格式在科學(xué)數(shù)據(jù)的共享上有很大的優(yōu)勢(shì),其優(yōu)勢(shì)在于:跨平臺(tái)性,允許人們?cè)跓o須經(jīng)過格式轉(zhuǎn)換,便可在不同操作系統(tǒng)上使用;自我描述性,一個(gè)HDF文件可包含所以關(guān)于該數(shù)據(jù)的信息,不需要附帶任何的描述性文件;多樣性,可以儲(chǔ)存并處理大量數(shù)據(jù),并且一個(gè)文件中可以包含多種類型數(shù)據(jù);靈活性和可擴(kuò)展性。正是因?yàn)檫@些優(yōu)點(diǎn),HDF格式文件被廣泛地運(yùn)用于科學(xué)數(shù)據(jù)共享,是目前國際上數(shù)據(jù)共享應(yīng)用較廣泛的文件格式2。正確高效地讀取HDF文件里面的數(shù)據(jù),是共享HDF格式科學(xué)數(shù)據(jù)的前提。目前比較常用的讀取HDF文件的方式是使用IDL3、C和Fortran等傳統(tǒng)語言工具,以及GrADS等繪圖軟件4也可以實(shí)現(xiàn)HDF文件的讀取。但是這些讀取方式對(duì)于非專業(yè)人員來說都有些難度,不容易在短期內(nèi)快速掌握,而利用MATLAB讀取HDF格式數(shù)據(jù)則相對(duì)簡(jiǎn)單高效。2 幾種HDF格式數(shù)據(jù)讀取方式比較2.1 交互式數(shù)據(jù)語言IDL美國RSI公司的交互式數(shù)據(jù)語言IDL(Interactive Data Language)是進(jìn)行二維及多維數(shù)據(jù)分析、可視化表達(dá)與跨平臺(tái)應(yīng)用開發(fā)的理想軟件工具。IDL是一種標(biāo)準(zhǔn)的讀取HDF文件的語言。其讀取HDF文件常用的關(guān)鍵IDL命令有:HDF_SD_START、HDF_SA_NAMETOINDEX、HDF_SD_SELECT、HDF_SD_GETDATA、HDF_SD_ENDACCESS、HDF_SD_END等。2.2 C、Fortran等程序語言C、Fortan等傳統(tǒng)語言工具也可以讀取HDF文件。從美國國家高性能計(jì)算應(yīng)用中心(NCSA)網(wǎng)站可下載到用于C和Fortran的HDF庫函數(shù)5??梢酝ㄟ^配置庫函數(shù),實(shí)現(xiàn)對(duì)HDF文件數(shù)據(jù)的讀取。2.3 GrADS軟件GrADS是目前氣象界廣泛使用的一種數(shù)據(jù)處理和顯示軟件系統(tǒng)。該軟件通過其集成環(huán)境對(duì)氣象數(shù)據(jù)進(jìn)行讀取、加工、圖形顯示和打印輸出。運(yùn)行GrADS軟件自帶的GrADSHDF應(yīng)用程序,使用sdfopen命令便可以打開HDF文件,并可進(jìn)一步對(duì)HDF文件進(jìn)行處理。2.4 HDF格式數(shù)據(jù)瀏覽軟件除了那些用途廣泛的語言程序以外,目前還有多款專門用于瀏覽HDF文件的軟件工具,例如HDF Explorer、HDF View、HDF Look、HDF Inspectoe等。這些HDF瀏覽軟件都以目錄樹形式來展開顯示HDF文件的分層數(shù)據(jù),主要功能是查看HDF文件屬性、數(shù)據(jù)等內(nèi)容。2.5 不同方法的優(yōu)缺點(diǎn)上面讀取HDF格式數(shù)據(jù)的方式各有其優(yōu)點(diǎn),但也存在不足之處,它們的優(yōu)缺點(diǎn)比較如表1所示。盡管利用以上讀取HDF文件方式有其各自的優(yōu)勢(shì),但是除了使用瀏覽軟件外,其他方式都首先要求使用者本身能夠熟練運(yùn)用該語言。這使得非專業(yè)人員如果想要讀取HDF文件里面的某些數(shù)據(jù),將不得不花費(fèi)大量的時(shí)間學(xué)習(xí)編寫程序代碼及使用專業(yè)軟件。而使用瀏覽軟件雖然能看到HDF文件里面的內(nèi)容,卻無法實(shí)現(xiàn)對(duì)數(shù)據(jù)的批量讀取、格式轉(zhuǎn)換等進(jìn)一步的處理。表1不同方法對(duì)于HDF文件讀取的優(yōu)缺點(diǎn)提取方法優(yōu)點(diǎn)缺點(diǎn)IDL不需要編寫大量的傳統(tǒng)程序就可以直接研究數(shù)據(jù)。需要配置專門的HDF文件的庫函數(shù),以及編寫特定的程序。這就要求使用者本身要對(duì)語言程序的使用有一定的基礎(chǔ),具備一定的編程水平。C、Fortran適用于與大型程序和批量數(shù)據(jù)的處理,將HDF讀取作為程序的一部分。GrADS無需HDF庫函數(shù)的支持就可以處理HDF文件,并且有很好的繪圖功能,可將數(shù)據(jù)直接繪制成圖像。使用者的范圍較小,一般僅限于氣象方面人員。讀取HDF文件的過程較為繁瑣,軟件本身也不容易掌握使用。瀏覽軟件簡(jiǎn)單易用,不用要求有任何的編程水平,能夠很直觀地查看文件數(shù)據(jù)。只能顯示文件內(nèi)容,難以實(shí)現(xiàn)對(duì)數(shù)據(jù)的提取,不能進(jìn)行批量化處理。3 利用MATLAB讀取HDF格式文件3.1 MATLAB讀取HDF格式文件的優(yōu)勢(shì)MATLAB是矩陣實(shí)驗(yàn)室(Matrix Laboratory)的簡(jiǎn)稱,是美國MathWorks公司出品的商業(yè)數(shù)學(xué)軟件,用于算法開發(fā)、數(shù)據(jù)可視化、數(shù)據(jù)分析以及數(shù)值計(jì)算的高級(jí)技術(shù)計(jì)算語言和交互式環(huán)境。該軟件有三大特點(diǎn),一是功能強(qiáng)大,具有數(shù)值計(jì)算和符號(hào)計(jì)算、計(jì)算結(jié)果和編程可視化、數(shù)學(xué)和文字統(tǒng)一處理、離線和在線計(jì)算等功能;二是界面友善、語言自然,MATLAB以復(fù)數(shù)處理作為計(jì)算單元,指令表達(dá)與標(biāo)準(zhǔn)教科書的數(shù)學(xué)表達(dá)式相近;三是開放性強(qiáng),其本身就擁有了30多個(gè)應(yīng)用工具箱,而世界上超過200家公司開發(fā)出與MATLAB兼容的第三方產(chǎn)品,這些產(chǎn)品向用戶提供更多的工具箱、模塊集、與其他商業(yè)產(chǎn)品的接口等。正是由于MATLAB的各種優(yōu)勢(shì)和特點(diǎn),已經(jīng)成為研究和解決各種具體工程問題的一種標(biāo)準(zhǔn)軟件。MATLAB里面提供了一組HDF應(yīng)用程序接口及一系列的函數(shù),這使得利用MATLAB打開、處理HDF文件非常方便6。利用MATLAB實(shí)現(xiàn)對(duì)于HDF格式數(shù)據(jù)的讀取優(yōu)勢(shì)在于:使用MATLAB的人員范圍廣泛;簡(jiǎn)單易學(xué),可以輕松運(yùn)用;不需要進(jìn)行大量編程工作,只要幾個(gè)簡(jiǎn)單函數(shù)命令就能夠?qū)崿F(xiàn)對(duì)數(shù)據(jù)的提??;強(qiáng)大的數(shù)值運(yùn)算和可視化功能,具有對(duì)數(shù)據(jù)進(jìn)行二次開發(fā)的能力。3.2 MATLAB讀取HDF文件方法1)使用 HDF Import ToolHDF Import Tool是MATLAB自帶的一個(gè)可視化的HDF文件輸入工具,主要用于HDF和HDF-EOS文件的瀏覽和輸入數(shù)據(jù)。在MATLAB的命令窗口輸入:hdftool,即可打HDF Import Tool;使用該工具可以打開HDF文件,可以從中看到HDF文件的信息。選定一個(gè)要打開的數(shù)據(jù)集,便可以看到該數(shù)據(jù)集的詳細(xì)信息,點(diǎn)擊Import即可把選擇的數(shù)據(jù)輸入到MATLAB工作區(qū)?;蛘咄ㄟ^在命令窗口輸入:hdftool(example.hdf),也可打開在MATLAB路徑下文件名為example.hdf的HDF文件。由于是可視化的工具,所以能夠很直觀的顯示HDF文件,而且將數(shù)據(jù)輸出的操作簡(jiǎn)單易行。2)使用信息讀取函數(shù)hdfinfo通過在MATLAB中使用hdfinfo這個(gè)函數(shù),可以獲得HDF文件的信息,其語法為:S= hdfinfo(filename)或S=hdfinfo(filename,mode);mode選用eos則只能讀取HDF-EOS文件,如果選取hdf或者缺省,既可讀取HDF文件信息又可讀取HDF-EOS文件文件信息。hdfinfo的返回值S包括了一系列關(guān)于HDF文件信息的字段,如文件名(Filename)、屬性(Attributes)、虛擬組(Vgroup)、科學(xué)數(shù)據(jù)集(SDS)等。3)使用MATLAB命令行接口MATLAB用一個(gè)單獨(dú)的低級(jí)函數(shù)hdfsd來代替HDF庫函數(shù)中的一系列應(yīng)用程序接口(API)的子程序,通過給該函數(shù)的第一個(gè)參數(shù)指定相應(yīng)的值,就能夠使用相當(dāng)于HDF API不同子程序的功能。一般使用hdfsd函數(shù)讀取HDF文件的流程為:打開HDF文件;獲得文件及數(shù)據(jù)集信息;選取數(shù)據(jù)集;從所選數(shù)據(jù)集中讀數(shù)據(jù);關(guān)閉數(shù)據(jù)集,關(guān)閉文件。部分hdfsd函數(shù)能夠?qū)崿F(xiàn)的數(shù)據(jù)讀取功能及其對(duì)應(yīng)參數(shù)值如表2所示。hdfsd函數(shù)的功能較為強(qiáng)大,基本可以實(shí)現(xiàn)對(duì)于HDF文件的信息獲取、數(shù)據(jù)讀取、寫入數(shù)據(jù)等各類處理功能。一般使用MATLAB對(duì)HDF文件進(jìn)行讀寫操作常使用hdfsd這一函數(shù),但是前提是需要熟悉這一函數(shù)的所有用法。4)使用高級(jí)輸入函數(shù)hdfread函數(shù)hdfread的功能是提取HDF或者HDF-EOS文件的數(shù)據(jù)。由于這個(gè)函數(shù)隱藏了HDF庫中規(guī)定的低級(jí)函數(shù)的許多操作細(xì)節(jié),將打開文件、選取數(shù)據(jù)集、讀取數(shù)據(jù)、關(guān)閉文件等一系列過程都包括了,所以使用起來非常簡(jiǎn)單。其讀取數(shù)據(jù)集數(shù)據(jù)的功能語法為:data = hdfread(filename, dataset)data返回指定數(shù)據(jù)集中的所有數(shù)據(jù),filename為HDF文件的名稱,dataset為數(shù)據(jù)集的名稱。函數(shù)hdfread還有其它的一些功能,比如讀取選定范圍的數(shù)據(jù)、讀取圖像數(shù)據(jù)等等,這里就不一一介紹??梢酝ㄟ^使用MATLAB自帶的幫助文檔,就能很容易知道該函數(shù)的其他功能。一般而言,僅僅是以簡(jiǎn)單的提取數(shù)據(jù)為目的,使用hdfread函數(shù)是一個(gè)簡(jiǎn)單實(shí)用的好方法。表2函數(shù)hdfsd的部分語法及其功能參數(shù)值函數(shù)語法函數(shù)功能startsd_id= hdfsd(start,filename,read)打開HDF文件fileinfondatasets,nglobal_attr,status= hdfsd(fileinfo,sd_id)獲得文件信息selectsds_id=hdfsd(select,sd_id,sds_idx)選擇數(shù)據(jù)集readdatadata,status=hdfsd(readdata,sds_id,ds_start,de_stride,ds_edges)從對(duì)應(yīng)數(shù)據(jù)集讀取數(shù)據(jù)readattrattr, status = hdfsd(readattr, sd_id(sds_id), id_idx(sds_idx)讀其對(duì)應(yīng)值的屬性enddaccessstat=hdfsd(endaccess,sds_id)關(guān)閉數(shù)據(jù)集endstat=hdfsd(end,sd_id)關(guān)閉文件4 利用MATLAB讀取HDF格式數(shù)據(jù)的應(yīng)用實(shí)例4.1 單個(gè)文件的數(shù)據(jù)讀取所讀取數(shù)據(jù)為NASA的海洋水色衛(wèi)星遙感專用處理軟件SeaDAS7的輔助氣象數(shù)據(jù)(來自NCEP數(shù)據(jù)),文件名為“S2009221906_NCEP.MET.hdf”,從中讀取世界時(shí)為2009年8月7日06時(shí),范圍是北緯10度至40度、東經(jīng)105度至140度的海平面氣壓數(shù)據(jù)。利用MATLAB讀取該HDF文件的步驟如下:(a)利用HDF Import Tool打開HDF文件。運(yùn)行MATLAB,在命令窗口中輸入:filename=S200921906_NCEP.MET.hdf;h=hdftool(filename)打開所要讀取的HDF文件。(b)獲取該HDF文件的相關(guān)信息。通HDF Import Tool可看到該文件包括經(jīng)向風(fēng)速(m_wind)、緯向風(fēng)速(z_wind)、海平面氣壓(press)、相對(duì)濕度(rel_hum)、可降水量(p_water)等10個(gè)數(shù)據(jù)集。從中可知道所要讀取的海平面氣壓數(shù)據(jù)的數(shù)據(jù)集名稱為press,數(shù)據(jù)集為二維矩陣,大小是181360,即表示該數(shù)據(jù)集為1*1的格點(diǎn)數(shù)據(jù)。(c)使用函數(shù)hdfread讀取數(shù)據(jù)。在命令窗口中輸入:P=hdfread(filename,press,Index,50,285,1,1,31,36);把北緯10-40、東經(jīng)105-140的氣壓數(shù)據(jù)從HDF文件中讀取出來,保存為變量P。(d)將提取數(shù)據(jù)保存為ASCII文件,關(guān)閉HDF文件。在命令窗口中輸入:dlmwrite(P.txt,P);dispose(h);函數(shù)dlmwrite功能是將矩陣轉(zhuǎn)為ASCII文件儲(chǔ)存,即提取的HDF格式數(shù)據(jù)轉(zhuǎn)化為ASCII格式存儲(chǔ)。最后關(guān)閉之前HDF Import Tool打開的HDF文件。此時(shí)的文件P.txt里面包含了所要提取的數(shù)據(jù),可以對(duì)其進(jìn)行繪圖等進(jìn)一步處理。4.2 多個(gè)文件的批量處理所讀取的數(shù)據(jù)為:時(shí)間2009年8月6日7日,范圍北緯10度至40度、東經(jīng)105度至140度的海平面氣壓數(shù)據(jù),并且使用GrASD軟件將這些數(shù)據(jù)繪制成海平面的氣壓場(chǎng)圖像。(a)通過編寫M文件來做批量讀取。所編的M文件程序?yàn)椋篠=S2009; date=; %date為保存所有數(shù)據(jù)的矩陣;for day=218:220D=int2str(day);for time=0:6:18 T=int2str(time); if time10 T=strcat(0,T); endfile=strcat(S,D,T,_NCEP.MET.hdf); %以時(shí)間信息來確定文件名; P=hdfread(file,press,Index,50,285,1,1,31,36); P=P;%將每個(gè)時(shí)次的數(shù)據(jù)提取出來,并為了與GrASD的數(shù)據(jù)格式相適應(yīng)而做轉(zhuǎn)置處理;date=date P;endendfid=fopen(dat.grd,w);c=fwrite(fid,date,single);fclose(fid) %將數(shù)據(jù)保存為二進(jìn)制格式存放。(b)利用GrASD軟件進(jìn)行繪圖。所繪制的部分圖像如圖1所示
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年博爾塔拉貨車上崗證理論模擬考試題庫
- 2025年萊蕪貨運(yùn)從業(yè)資格證考試題庫
- 人教部編版道德與法治八年級(jí)下冊(cè):2.1 《堅(jiān)持依憲治國》聽課評(píng)課記錄1
- 2024-2025學(xué)年高中語文課時(shí)作業(yè)11漸含解析粵教版必修2
- 衛(wèi)生醫(yī)療年度個(gè)人總結(jié)
- 新員工工作計(jì)劃書
- 高三年級(jí)期末總結(jié)
- 小學(xué)三年級(jí)語文教材教學(xué)計(jì)劃
- 濟(jì)南城市房屋租賃合同
- 蘭州職業(yè)技術(shù)學(xué)院《漢魏六朝文學(xué)與文論精講》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025屆鄭州市高三一診考試英語試卷含解析
- 新《安全生產(chǎn)法》安全培訓(xùn)
- 《我國個(gè)人所得稅制下稅收征管問題研究》
- 建筑工程三通一平技術(shù)方案
- 綠化養(yǎng)護(hù)工安全培訓(xùn)
- 腫瘤中醫(yī)治療及調(diào)養(yǎng)
- DB21-T 1720-2017海水源熱泵系統(tǒng)工程技術(shù)規(guī)程
- 組長(zhǎng)競(jìng)選課件教學(xué)課件
- 《基于UTAUT2模型的虛擬學(xué)術(shù)社區(qū)用戶持續(xù)使用意愿影響因素研究》
- 2022年公務(wù)員多省聯(lián)考《申論》真題(遼寧A卷)及答案解析
- 2024 ESC慢性冠脈綜合征指南解讀(全)
評(píng)論
0/150
提交評(píng)論