文档

在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(文件标识);

另请参阅

||||||||

这个话题有用吗?