在HDF5文件中使用非ascii字符
要实现跨多个地区共享HDF5文件,请使用MATLAB®万博1manbetx支持HDF5文件中使用非ascii字符。这个例子告诉你如何:
使用高级函数创建包含非ascii字符的数据集和属性名的HDF5文件。
使用底层函数创建包含非ascii字符的变长字符串数据集。
创建包含非ascii字符的数据集和属性名
创建一个HDF5文件,其中包含一个数据集名称和一个包含非ascii字符的属性名称。若要检查数据集和属性名称是否如预期所示,请将数据写入数据集,并显示文件信息。
创建名称为(/数据集
),包括非ascii字符。
dsetName = [' / 'Char ([25968 25454 38598])];dsetDims = [5 2];h5create (“outfile.h5”,[' / grp1 'dsetDims dsetName),...“TextEncoding”,“utf - 8”);
dataToWrite = rand(dsetDims);h5write (“outfile.h5”,[' / grp1 'dsetName], dataToWrite);
创建属性名(屬性名稱
),包括非ascii字符,并为该属性赋值。
attrName = char([25967 25453 38597]);h5writeatt (“outfile.h5”,' / 'attrName,“我是一种属性”,...“TextEncoding”,“utf - 8”);
显示有关文件的信息,并检查属性名称和数据集名称是否正确显示。
h5disp (“outfile.h5”)
HDF5输出文件。h5 Group '/' Attributes: '/屬性名稱':'I am an attribute' Group '/grp1' Dataset '数据集' Size: 5x2 MaxSize: 5x2 Datatype: H5T_IEEE_F64LE (double) ChunkSize: [] Filters: none FillValue: 0.000000
创建包含非ascii字符的可变长度字符串数据
使用底层函数创建一个变长字符串数据集来存储包含非ascii字符的数据。将数据写入数据集。检查数据写入是否正确。
创建包含非ascii字符的数据。
dataToWrite = {char([12487 12540 12479])“你好”...Char ([1605 1585 1581 1576 1575]);...“世界”Char ([1052 1080 1088])...Char ([954 972 963 956 959 962])};disp (dataToWrite)
'デタ' 'hello' 'مرحبا' 'world' 'Мир' κόσμο ζ '
若要将此数据写入文件,请创建HDF5文件,定义组名和组内的数据集名。
创建HDF5文件。
文件名=“outfile.h5”;fileID = H5F.create(文件名,“H5F_ACC_TRUNC”,...“H5P_DEFAULT”,“H5P_DEFAULT”);
要创建名称中包含非ascii字符的组,首先,配置链接创建属性。
lplid = H5P.create(“H5P_LINK_CREATE”);H5P.set_char_encoding (lcplID H5ML.get_constant_value (“H5T_CSET_UTF8”));plist =“H5P_DEFAULT”;
然后,创建组(グルプ
).
grpName = char([12464 12523 12540 12503]);grpID = H5G.create(fileID,grpName,lcplID,plist,plist);
创建包含非ascii字符的变长字符串数据的数据集。首先,配置其数据类型。
typeID = H5T.copy(“H5T_C_S1”);H5T.set_size(类型id,“H5T_VARIABLE”);H5T.set_cset(类型id, H5ML.get_constant_value (“H5T_CSET_UTF8”));
现在,通过指定数据集的名称、数据类型和维来创建数据集。
dsetName =“datasetUtf8”;dataDims = [2 3];h5DataDims = fliplr(dataDims);h5MaxDims = h5DataDims;spaceID = H5S.create_simple(2,h5DataDims,h5MaxDims);dsetID = H5D.create(grpID,dsetName,typeID,spaceID,...“H5P_DEFAULT”,“H5P_DEFAULT”,“H5P_DEFAULT”);
将数据写入数据集。
H5D.write (dsetID“H5ML_DEFAULT”,“H5S_ALL”,...“H5S_ALL”,“H5P_DEFAULT”, dataToWrite);
读取数据。
dataRead = h5read(“outfile.h5”,[' / 'grpName' / 'dsetName])
dataRead = 2×3单元阵列{“データ’}{'你好'}{“مرحبا’}{‘世界’}{“Мир’}{“κόσμος'}
检查文件中的数据是否与写入的数据匹配。
isequal (dataRead dataToWrite)
Ans =逻辑1
密切的id。
H5D.close (dsetID);H5S.close (spaceID);H5T.close(类型id);H5G.close (grpID);H5P.close (lcplID);H5F.close(文件标识);
另请参阅
H5A.get_name
|H5I.get_name
|H5L.get_name_by_idx
|H5L.get_val
|H5R.get_name
|h5create
|h5disp
|h5info
|h5writeatt
这个话题有用吗?