Это моя первая попытка создать файл HDF5 с нуля с помощью команд Low-Level с помощью MATLAB.
Моя проблема в том, что мне трудно пытатьсязаписать данные для каждого конкретного члена в типе данных в моем наборе данных.
Сначала я создаю новый файл HDF5 и устанавливаю правильный слой групп:
new_h5 = H5F.create('new_hdf5_file.h5','H5F_ACC_TRUNC','H5P_DEFAULT','H5P_DEFAULT');
new_h5 = H5G.create(new_h5,'first','H5P_DEFAULT','H5P_DEFAULT','H5P_DEFAULT');
new_h5 = H5G.create(new_h5,'second','H5P_DEFAULT','H5P_DEFAULT','H5P_DEFAULT');
Затем я создаю свойтип данных:
datatype = H5T.create('H5T_compound',20);
H5T.insert(datatype,'first_element',0,'H5T_NATIVE_INT');
H5T.insert(datatype,'second_element',4,'H5T_NATIVE_DOUBLE');
H5T.insert(datatype,'third_element',12,'H5T_NATIVE_DOUBLE');
Затем я форматирую это в свой набор данных:
new_h5 = H5D.create(new_h5,'location',datatype,H5S.create('H5S_SCALAR'),'H5P_DEFAULT');
subset = H5D.get_type(H5D.open(new_h5,'/first/second/location'));
mem_type = H5T.get_member_type(subset,0);
Я получаю сообщение об ошибке с помощью следующей команды:
H5D.write(mem_type,'H5ML_DEFAULT','H5S_ALL','H5S_ALL','H5P_DEFAULT',data);
Обнаружена ошибка при использовании hdf5lib2
Необработанный класс HDF5 (H5T_NO_CLASS).Невозможно записать в этот атрибут или набор данных.
Итак, я пытаюсь использовать этот метод:
new_h5 = H5D.create(new_h5,'location',datatype,H5S.create_simple(2,dims,dims),'H5P_DEFAULT'); %where dims are the dimensions of all matrices of data structure
H5D.write(mem_type,'H5ML_DEFAULT','H5S_ALL','H5S_ALL','H5P_DEFAULT',data); %where data is a structure
Я получаю сообщение об ошибке с помощью следующей команды:
H5D.write(mem_type,'H5ML_DEFAULT','H5S_ALL','H5S_ALL','H5P_DEFAULT',data);
Ошибка при использовании hdf5lib2
Попытка передать слишком много значений в или из буфера библиотеки.
При поиске здесь дляXML-теги для сообщений об ошибках, он описывает вышеуказанную ошибку как «invalidArrayAccess».По-видимому, в соответствии с этим вопросом , вы можете записать только 4 члена без буфера, выдающего ошибку?
Это правильно?Как я могу правильно написать каждому участнику.Я вот-вот достигну своего ментального предела, пытаясь понять это.
РЕДАКТИРОВАТЬ :
Ссылки, хранящиеся здесь для общей информации:
Пример составных типов данных HDF5
Типы составных данных HDF5
H5D.write Команда MATLAB