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

标签 matlab hdf5

我有一个 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/

相关文章:

python - 将字典保存到文件(numpy 和 Python 2/3 友好)

在 Matlab 中验证具有给定格式的日期

matlab - 有没有办法避免循环使这段代码更快?

matlab - MATLAB 图 PDF 周围的紧边界框

python - 对于 python,安装 hdf5/netcdf4

Python、NetCDF4 和 HDF5

matlab - 如何沿 MATLAB 网格上的散点路径进行插值?

arrays - 是否可以在不循环的情况下对 Matlab 中的结构子字段数组进行平均?

python - HDFStore 启动停止不起作用

python - 在 HDF5 中存储 Pandas 对象和常规 Python 对象