Matlab 操作 HDF5文件

HDF5文件

在使用Matlab對數(shù)據(jù)進行預處理時堂竟,遇到了內存不足的問題哗戈,因為數(shù)據(jù)量太大郊艘,在處理完成以前內存已經爆滿。如果使用Matlab的.m文件對文件進行存儲的話,則需要將數(shù)據(jù)分割成多個文件纱注,對后續(xù)的處理造成了不便畏浆。HDF5文件則是一種靈活的文件存儲格式,有一個最大的好處就是在Matlab的處理過程中可以對它進行擴展寫入狞贱,也就是說不是所有數(shù)據(jù)處理完以后一次寫入刻获,而是邊處理邊寫入,極大的降低了對系統(tǒng)內存的要求瞎嬉。

HDF5文件類似與一個文件系統(tǒng)蝎毡,使用這個文件本身就可以對數(shù)據(jù)集(dataset)進行管理。例如下圖所示氧枣,HDF5文件中的數(shù)據(jù)集皆存儲根目錄/顶掉,在根目錄下存在多個group,這樣一些group類似與文件系統(tǒng)的文件夾挑胸,在它們可以存儲別的group,也可以存儲數(shù)據(jù)集宰闰。

HDF5文件格式

對于每一個dataset 而言茬贵,除了數(shù)據(jù)本身之外,這個數(shù)據(jù)集還會有很多的屬性 attribute,移袍。在hdf5中解藻,還同時支持存儲數(shù)據(jù)集對應的屬性信息,所有的屬性信息的集合就叫做metadata;

MetaData

使用Matlab操作HDF5文件

使用Matlab創(chuàng)建HDF5文件

使用Matlab創(chuàng)建HDF5文件的函數(shù)是h5create葡盗,使用如下:

h5create(filename,datasetname,[30, 30 , 3, inf],'Datatype','single','ChunkSize',[30,30,3,1000])

filenameh5文件的文件名(不知道什么問題螟左,在我的電腦上使用時,這個函數(shù)無法指定路徑)觅够。
datasetname則為數(shù)據(jù)集的名字胶背,數(shù)據(jù)集名稱必須以/開頭,比如/G喘先。
[30,30,3,inf]位數(shù)據(jù)集的大小钳吟,比如我的數(shù)據(jù)集為30x30大小的彩色圖像,并且我希望數(shù)量能夠擴展窘拯,那么就可以指定最后以為度為inf红且,以表示數(shù)量不限。
Datatype為數(shù)據(jù)類型
ChunkSize為數(shù)據(jù)存儲的最小分塊涤姊,為了讓數(shù)據(jù)能夠具有擴展性暇番,所以為新來的數(shù)據(jù)分配一定的空間大小,對于一個非常大的數(shù)據(jù)思喊,這個值設置大一點比較好壁酬,這樣分塊就會少一點。比如我的數(shù)據(jù)集中,30x30大小的彩色圖像大概有10萬個左右厨喂,那么1000個存儲在一起較為合適和措,則chunksize設置為:[30,30,3,1000]。

使用Matlab寫入HDF5

在創(chuàng)建了hdf5文件和數(shù)據(jù)集以后蜕煌,則可以對數(shù)據(jù)集進行寫操作以擴展里面的數(shù)據(jù)派阱。使用Matlab寫入HDF5文件的函數(shù)是h5write,使用如下:

h5write(fileName,datasetName,data,start,count);

fileName: hdf5文件名
datasetName:數(shù)據(jù)集名稱斜纪,比如/G
data:需要寫入的數(shù)據(jù)贫母,數(shù)據(jù)的維度應該與創(chuàng)建時一致,比如盒刚,設置的數(shù)據(jù)集大小為[30,30,3,inf]腺劣,那么這里的data的前三個維度就應該是[30, 30, 3],而最后一個維度則是自由的
start:數(shù)據(jù)存儲的起點因块,如果是第一次存橘原,則應該為[1, 1, 1, 1](注意數(shù)據(jù)維度的一致性),如果這次存了10000個樣本涡上,也就是[30,30,3,10000]趾断,那么第二次存儲的時候起點就應該為[1,1,1,10001]
count存儲數(shù)據(jù)的個數(shù),同樣要根據(jù)維度來(其實就是數(shù)據(jù)的維度)吩愧,這里為[30,30,3,10000]

使用Matlab查看HDF5文件信息

Matlab中可以使用h5info函數(shù)來讀取HDF5文件的信息:

fileInfo = h5info(fileName);

然后通過解析fileInfo結構芋酌,則可以得到HDF5文件中的數(shù)據(jù)集名稱、數(shù)據(jù)集大小等等必要信息雁佳。

使用Matlab讀取HDF5中的數(shù)據(jù)集

Matlab中可以使用h5read函數(shù)來讀取HDF5文件:

data = h5read(filename,datasetname,start,count)

filename:HDF5文件文件名
datasetname:數(shù)據(jù)集名稱
start:從數(shù)據(jù)集中取數(shù)據(jù)的其實位置
count:取的數(shù)據(jù)數(shù)量
還是以上面的30x30的彩色圖像為例脐帝,如果每次需要取1000個,那么第一次取時糖权,start應該設置為[1, 1, 1, 1] 堵腹,count設置為:[30, 30 ,3 1000]。第二次取值時温兼,start則應該設置為[1, 1, 1, 1001]秸滴,count則設置為:[30, 30, 3, 1000]。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末募判,一起剝皮案震驚了整個濱河市荡含,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌届垫,老刑警劉巖释液,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異装处,居然都是意外死亡误债,警方通過查閱死者的電腦和手機浸船,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來寝蹈,“玉大人李命,你說我怎么就攤上這事◇锢希” “怎么了封字?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長耍鬓。 經常有香客問我阔籽,道長,這世上最難降的妖魔是什么牲蜀? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任笆制,我火速辦了婚禮,結果婚禮上涣达,老公的妹妹穿的比我還像新娘在辆。我一直安慰自己,他們只是感情好度苔,可當我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布开缎。 她就那樣靜靜地躺著,像睡著了一般林螃。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上俺泣,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天疗认,我揣著相機與錄音,去河邊找鬼伏钠。 笑死横漏,一個胖子當著我的面吹牛,可吹牛的內容都是我干的熟掂。 我是一名探鬼主播缎浇,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼赴肚!你這毒婦竟也來了素跺?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤誉券,失蹤者是張志新(化名)和其女友劉穎指厌,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體踊跟,經...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡踩验,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片箕憾。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡牡借,死狀恐怖,靈堂內的尸體忽然破棺而出袭异,到底是詐尸還是另有隱情钠龙,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布扁远,位于F島的核電站俊鱼,受9級特大地震影響,放射性物質發(fā)生泄漏畅买。R本人自食惡果不足惜并闲,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望谷羞。 院中可真熱鬧帝火,春花似錦、人聲如沸湃缎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽嗓违。三九已至九巡,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蹂季,已是汗流浹背冕广。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留偿洁,地道東北人撒汉。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像涕滋,于是被迫代替她去往敵國和親睬辐。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,504評論 25 707
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理宾肺,服務發(fā)現(xiàn)溯饵,斷路器,智...
    卡卡羅2017閱讀 134,599評論 18 139
  • 你要明白愛情是建立在物質上的锨用。 我愛你是因為你能給我想要的瓣喊。 所有人都喜歡安逸。 所以你要時刻告誡自己黔酥。你要為那愛...
    煙酒大叔閱讀 222評論 1 3
  • 孤獨是一只小船藻三, 它總是喜歡獨自一只 在那溪流上漂浮洪橘。 有一只蝴蝶看見它了, 停留在它的船檐棵帽。 “我能和你做朋友嗎...
    嘉魚哇閱讀 292評論 2 1
  • 昨天是2015年9月2日熄求,到達廣州的第一天。飛機落地那一瞬間逗概,地鐵馳騁過程中弟晚,輪船靠岸那一刻,找尋B家的路上逾苫,我依...
    花殘閱讀 360評論 0 1