在八度音阶中,我用单元格和矩阵创建了一个文件>> xmat = [1,2,3;4,5,6;7,8,9];
>> xcell = {1,2,3;4,5,6;7,8,9};
>> save -hdf5 testmat.h5 xmat xcell
在ipython和{}中,我发现这个文件包含2个组
^{pr2}$
矩阵组有一个type和value数据集:In [285]: F['xmat']
Out[285]:
In [286]: list(F['xmat'].keys())
Out[286]: ['type', 'value']
In [287]: F['xmat']['type']
Out[287]:
In [288]: F['xmat']['value']
Out[288]:
In [289]: F['xmat']['value'][:]
Out[289]:
array([[ 1., 4., 7.],
[ 2., 5., 8.],
[ 3., 6., 9.]])
细胞具有相同的type和{},但{}是另一组:In [291]: F['xcell']['type']
Out[291]:
In [292]: F['xcell']['value']
Out[292]:
In [294]: list(F['xcell']['value'].keys())
Out[294]: ['_0', '_1', '_2', '_3', '_4', '_5', '_6', '_7', '_8', 'dims']
...
In [296]: F['xcell']['value']['dims'][:]
Out[296]: array([3, 3])
我不得不使用[...]来获取单元格的值,因为它是一个0d数组:In [301]: F['xcell']['value']['_0']['value'][...]
Out[301]: array(1.0)
为了真正复制这个问题,我应该创建字符串单元格值,但我认为这很好地说明了如何将单元格存储为数据组中的命名数据集。在
我假设Octave h5存储与MATLAB兼容