编写和修改属性h5文件

70(30天)
大卫
大卫 2011年2月16日
编辑: 每•艾萨克森 2014年12月12日
我有一个 * 与两组.h5文件——“/信息”和“/数据”。/信息的14组包含一系列属性,提供相关信息/数据的数据集。我想开发一个“属性编辑器”“/信息”属性,但我有困难修改现有的属性。我试过两种方法使用hdf5write和h5attput(从hdf5tools在matlab中央)。
使用hdf5write我可以执行以下操作:
attr =new_info ';
attr_details。Name =“New_Attribute”;
attr_details。在=' / info ';
attr_details。AttachType =“集团”;
hdf5write (“myh5file.h5”、attr_details attr,“写模式”,“添加”);
如果属性不存在以前,这似乎工作好,我得到一个新属性/信息/ New_Attribute其价值。Data =“new_info”。然而,如果我决定,我想改变这一点,继续
attr =newer_info ';
hdf5write (“myh5file.h5”、attr_details attr,“写模式”,“添加”);
我得到错误的
? ? ?错误使用= = > hdf5writec
writeH5Attr:无法创建属性。
错误在= = > hdf5write享年143岁
hdf5writec(文件,细节,变长度输入宗量{dset_idx});
改变“写模式”“覆盖”并不能奏效。
使用h5attput是类似的,我可以用命令创建一个新的属性
h5attput (“myh5file.h5”,' /信息',“New_Attribute”,“new_info”);
但试图修改“New_Attribute”给了一个错误,即
h5attput (“myh5file.h5”,' /信息',“New_Attribute”,“newer_info”);
? ? ?错误使用= = > hdf5lib2
HDF5库遇到一个错误:“未知错误”。
错误在= = >写36
H5ML.hdf5lib2 (“H5Awrite”变长度输入宗量{:});
错误在= = > h5attput 51
H5A.write (att_id datatype_id attvalue);
h5attput的区别在于,对于数值型数据,我可以修改属性,例如:
h5attput (“myh5file.h5”,' /信息',“Numeric_Attribute”12);
创建属性/信息/ Numeric_Attribute的价值= 12,可以成功更新的时候可以这样说:
h5attput (“myh5file.h5”,' /信息',“Numeric_Attribute”58岁);
所以,总之,我可以使用hdf5write或h5attput创建新的属性在现有组,但我不能使用命令修改属性类似于用于创建它们。例外情况中使用h5attput属性数值。我也试着创建一个h5字符串对象
new_info = hdf5.h5string (“new_info”)
但无论是hdf5write或h5attput接受h5字符串作为输入。
提前感谢任何输入和想法。

答案(1)

阿施施Uthama
阿施施Uthama 2011年2月17日
HDF5属性不能被“覆盖”有不同的数据类型。
因为你提到的功能为你工作在创建属性,一个方法是删除属性敌我识别它已经存在,然后创建一个新的。
这里是一个片段展示如何删除现有的属性:
h5file =“myfile.h5”;
位置=' /信息';
attributeName =“Some_Attribute”;
%打开文件(确保关闭时自动完成)
文件标识= H5F.open (h5file,“H5F_ACC_RDWR”,“H5P_DEFAULT”);
fileIDCleanUp = onCleanup (@ () H5F.close ("));
%打开数据集/组
locID = H5O。打开(文件标识、位置“H5P_DEFAULT”);
locIDCleanUp = onCleanup (@ () H5O.close (locID));
试一试%打开属性。
attID = H5A。open (locID attributeName,“H5P_DEFAULT”);
H5A.close (attID);
H5A.delete (locID attributeName);
所有
%如果属性不存在。
结束

标签

s manbetx 845

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!