您的位置:首页 > 汽车 > 新车 > 4g网络架构_深圳前海网站设计_可以发广告的100个网站_长沙网络推广哪家

4g网络架构_深圳前海网站设计_可以发广告的100个网站_长沙网络推广哪家

2024/10/21 8:53:49 来源:https://blog.csdn.net/qq_41982200/article/details/143093231  浏览:    关键词:4g网络架构_深圳前海网站设计_可以发广告的100个网站_长沙网络推广哪家
4g网络架构_深圳前海网站设计_可以发广告的100个网站_长沙网络推广哪家

最近遇到了H5文件的读写问题,便查阅资料,但是网上结果参差不齐,于是就将本人的读写操作记录下来,水平有限仅供参考。

H5数据打印h5disp

由于我们事先不清楚H5文件中的信息,因此第一步便需要将H5的数据结果打印出来。

file='my.h5';
h5disp(file);

打印之后,将会看到H5中的group和dataset。例如,该H5文件中有两个Gropu分别是DATA和MOD,以及对应的数据集data和model。
在这里插入图片描述
以下是对应的两个数据

Name={'model name'};
fs=1e+3; 
Simulink.defineIntEnumType('FrequencyUnits', {'Hz', 'kHz', 'MHz'},[0;1;2]); 
model=struct('Name', {Name}, 'fs',fs, 'FrequencyUnits',int32(0));
data1=cell(2,1);
data1{1,1}=[1;2];
data1{2,1}=[3;4]; 
freq=[1: 100]';
data=struct('data',{data1}, 'freq', freq);

这两个数据集中有枚举类型和cell数组。

H5数据读取h5read

在清楚H5数据结构之后,我们就可以调用h5read读取各个dataset,即

data=h5read(filename,'Data/data/);
model=h5read(filename,'DMOD/model/);

建立H5文件H5F.create

在对H5的基本结构有了一定了解后,下面将展示如何建立一个H5文件。

H5F.create(filename, 'H5F_ACC_TRUNC','H5P_DEFAULT','H5P_DEFAULT');

函数的参数这里不做介绍,可以直接help了解。

打开建立H5文件H5F.open

fileID=H5F.open(filename, 'H5F_ACC_RDWR','H5P_DEFAULT');

建立H5文件中的Group H5G.create

H5G.create(fileID, '/MOD', 'H5P_DEFAULT', 'H5P_DEFAULT', 'H5P_DEFAULT') ; 
H5G.create(fileID, '/DATA', 'H5P_DEFAULT', 'H5P_DEFAULT', 'H5P_DEFAULT');

创建数据类型H5T.create

创建数据model

info=whos("model");
compoundtype=H5T.create('H5T_COMPOUND'',info.bytes);
stringtype=H5T.create('H5T_STRING''H5T_VARIABLE');
H5T.set_size(stringtype,'H5T_VARIABLE');
parent_id =H5T.copy('H5T_NATIVE_INT');enumtype_freq = H5T.enum_create(parent_id);
H5T.enum_insert(enumtype_freq,'Hz'0);
H5T.enum_insert(enumtype_freq,'kHz'1);
H5T.enum_insert(enumtype_freq,1'MHZ'2);offset=0:
H5T.insert(compoundtype,'Name',offset,stringtype);
offset=H5T.get_size(stringtype)+offset;
H5T.insert(compoundtype,'fs',offset,'H5T_NATIVE_INT');
offset=H5T.get_size('H5T_NATIVE_INT')+offset;
H5T.insert(compoundtype,'FrequencyUnits',offset,enumtype_freq)

创建数据data

info=whos("data"“);
compoundtype1=H5T.create('H5T_COMPOUND',info.bytes);
vlentype_double=H5T.vlen_create('H5T_NATIVE_DOUBLE');offset=0:
H5T.insert(compoundtype1,'data',offset,vlentype_double);
offset=H5T.get_size(vlentype_double)+offset;
H5T.insert(compoundtype1,'freq',offset,'H5T_NATIVE_DOUBLE')

将数据集写入H5

model数据写入

attrValue='1.0':
spaceID=H5S.create_simple(111);
datasetID=H5D.create(fileID,'/MOD/model',compoundtype,spaceID,'H5P_DEFAULT');H5D.write(datasetID,'H5ML_DEFAULT''H5S_ALL''H5S_ALL''H5P_DEFAULT',,model)h5writeatt(filename,,'/MOD/model''Version'',attrValue)

这里需要先创建数据空间大小,然后写入数据。此外,这里还展示了属性的写入方法。

data数据写入

spaceID=H5S.create_simple(122);
datasetID1=H5D.create(fileID,'/DATA/data',compoundtype1,spaceID,'H5P_DEFAULT');H5D.write(datasetID1,'H5ML_DEFAULT''H5S_ALL''H5S_ALL''H5P_DEFAULT',data)

注意这里声明的空间大小和model变量不一样,因此这里设计一个2*1的cell数据写入。

关闭H5文件

H5F.close(fileID);

读写H5文件最重要的是了解几个基本结构体H5F,H5D,H5T等,以及如何构造数据类型。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com