gpt4 book ai didi

matlab - 如何从 MATLAB 更改 HDF5 文件中的数据类型?

转载 作者:太空宇宙 更新时间:2023-11-03 20:35:38 25 4
gpt4 key购买 nike

我有一个 HDF5 数据文件,其中包含一个 int32 数据值数组。我希望将该数组中存储的数据更改为不同格式( double )的不同值。

例如,我可以使用以下查询数据类型:

 finf=h5info('file.hdf5');
finf.Datasets(1).Datatype

ans =

Name: ''
Class: 'H5T_INTEGER'
Type: 'H5T_STD_I32LE'
Size: 4
Attributes: []

如果我尝试在同一节点位置重新创建数据,则会出现以下错误,表明数据集已存在:

t=double(h5read([filepath filename],'/t'));

% more t calculations here....

h5create('file.hdf5','/t',size(t),'DataType','double');

Error using h5create>create_dataset (line 159)
The dataset '/t' already exists.

Error in h5create (line 69)
create_dataset(options);

我在 Matlab 文档中查找了删除 hdf5 文件中数据集的函数,但找不到任何引用资料。有人有什么想法吗?

最佳答案

无法删除数据集或更改其数据类型。来自 HDF5 manual 的第 5.3.2 节:

The datatype is set when the dataset is created and can never be changed.

这是由于 HDF5 文件中的空间分配方式所致。虽然无法删除数据集(出于同样的原因),但可以“取消链接”并使其不可访问,但这不会回收已用空间。

如果您确实需要更改数据类型,您有两种选择:第一种是取消旧数据集的链接并在其位置创建一个新数据集。新数据集可以与旧数据集同名。但是,如果空间不足,您可能更愿意只创建一个全新的 HDF5 文件,然后将旧数据复制到新文件中。

关于matlab - 如何从 MATLAB 更改 HDF5 文件中的数据类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17994790/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com