Using MATLAB on a HDF5 database, does the HDF5 read support having compound datatypes within attributes?


#1

I have an HDF5 database that contains attributes that have compound datatype. Using MATLAB, when I run h5info on my database, it generates an error message. I tracked down the problem and it dealt with the compound datatype in my database. When I deleted my compound datatype from my database, h5info works. There’s nothing special about my compound datatype. It contains an integer value and two double array. So my question is, can MATLAB’s h5info handle compound datatypes within attributes, which are valid in HDF5 OR is there a way to read these attributes in MATLAB from high or low level?

The error message returned from MATLAB’s h5info:

Error using h5infoc
No MATLAB class corresponds to floating point numbers with more than 64 bits.

Error in h5info (line 101)
hinfo = h5infoc(filename, location, useUtf8);

Error in h5disp>display_hdf5 (line 112)
hinfo = h5info(options.Filename, options.Location);

Error in h5disp (line 90)
display_hdf5(options);

When I tried to use MATLAB’s low level functions to get into the attribute I noticed this however. I could open the h5 file and get the file id and the group id that contained the attribute with the compound type just fine. I could even get the attribute id by calling H5A.open through my group. When I called read on the attribute through H5A it returned the same error as above. So I called H5A.get_info on the attribute id it returned

ans =
struct with fields:
corder_valid:1
corder:1
cset:0
data_size:280

This leads me to believe that not all compound datatypes are allowed within an Hdf5 attribute. Any help would be greatly appreciated.


#2

HDF5 attribute may have a datatype of arbitrary complexity. I suggest that you contact MATLAB mailing list.

Thank you!

Elena