createhdf5dataset

Creates a new dataset and writes data. Errors out if dataset exists; creates file if it doesn't exist.

Syntax

createhdf5dataset(filename, datasetPath, data)

createhdf5dataset(filename, datasetPath, data, chunk)

Inputs

filename
Path to the HDF5 file.
Type: string
datasetPath
Fully qualified path of the dataset in the file.
Type: string
data
Data to write.
Type: logical | number | string | cell | struct | matrix | ndmatrix
chunk
Optional. Chunk size. 1*N matrix, where N is the number of dimensions of data.
Type: matrix
Table 1. Data Type Mapping: Output Cell Contains the Following OML Data Types:
OML Variable Type HDF Data Type Limitation
Logical Integer  
Number/Matrix/ND matrix Float OML complex data written as HDF5 compound data type with fields "Real", "Imag". An attribute with the name omlcomplex is added to the dataset.
String String Creates variable length strings.
Struct Compound Field name as key and data as value associated with key (field name). Only single element structs are supported.
Cell/ND Cell   Data inside cell/nd cell should be of same type and same dimension.
Only the following are supported:
  • When used directly as input data, strings inside cell/nd cell go to strings in the dataset.
  • Dataset dimensions are equal to the cell/nd cell dimensions.
  • When cell/nd cell is the value of struct, the cell value should be matrix/nd matrx, and matrix/nd matrix go to arrays inside the compound data.

Example 1

Dereference data read by readhdf5.
output=readhdf5('plate_linear_static.hdf5','/OptiStruct/RESULT/Subcase 1/ELEMENT_FORCE/QUAD4');
      createhdf5dataset('test.h5','/QUAD4',output{1,1})
      output=readhdf5('test.h5','/QUAD4')
      
        output = 
        {
          [1,1] struct [
          BMX: [Matrix] 10000 x 1 Rows[1:30] Column[1]
           151.80786
           156.49155
           161.25160
           147.32631
           149.64325
           156.68770
           ....
          ]
        }

Example 2

Create dataset with logical/number/matrix/ndmatrix data.
logical_data = true;
      createhdf5dataset('test.h5','/logical_data',logical_data)
      
      number_data=99;
      createhdf5dataset('test.h5','/number_data',number_data)
      
      real_matrix_data = [1,2;3,4];
      createhdf5dataset('test.h5','/real_matrix_data',real_matrix_data)
      
      real_nd_matrix_data(2,3,4) = 9;
      real_nd_matrix_data(1,2,3) = 97;
      real_nd_matrix_data(1,3,2) = 98;
      real_nd_matrix_data(1,2,1) = 99;
      createhdf5dataset('test.h5','/real_nd_matrix_data',real_nd_matrix_data)

Example 3

Create dataset with complex data of number/matrix/ndmatrix.
number_complex_data=99+8i;
createhdf5dataset('test.h5','/number_complex_data',number_complex_data)
      
real_matrix_complex_data = [1+3i,2+6i;3+8i,4+65i];
createhdf5dataset('test.h5','/real_matrix_complex_data',real_matrix_complex_data)
      
real_nd_matrix_complex_data(2,3,4) = 9+7i;
real_nd_matrix_complex_data(1,2,3) = 97+5i;
real_nd_matrix_complex_data(1,3,2) = 98+6i;
real_nd_matrix_complex_data(1,2,1) = 99+5i;
createhdf5dataset('test.h5','/real_nd_matrix_complex_data',real_nd_matrix_complex_data)

Example 4

Create dataset with string data.
str_data = 'test string';
      createhdf5dataset('test.h5','/str_data',str_data)
      
        str_data_cell{1,1} = 'test string 1,1';
        str_data_cell{1,2} = 'test string 1,2';
        str_data_cell{2,1} = 'test string 2,1';
        str_data_cell{2,2} = 'test string 2,2';
        createhdf5dataset('test.h5','/str_data_cell',str_data_cell)

Example 5

Create dataset with struct data.
struct_data = struct('field_name1', 99, 'field_name2', 'test string');
      createhdf5dataset('test.h5','/struct_data',struct_data)

Example 6

Create dataset with user-preferred chunk size.
data=rand(900,400);
      createhdf5dataset('test.h5','/data_user_preferred_chunk',data,[300,200])

Example 6

Write object reference read to a new dataset.
output=readhdf5('spice_inv2.dhdf','/Model/Variables');
      %modify object reference
      ((output{1,1}).('objectId'))(71) = 98215;
      createhdf5group('spice_inv2_new.dhdf','/Model');
      %To new dataset object references (e.g objectId) is written as floating point number
      createhdf5dataset('spice_inv2_new.dhdf','/Model/Variables',output{1,1});

Comments

Known limitations include:
  • Creates chunked dataset.
  • Object references read using the readhdf5 command are written as double to new dataset.
  • Parent group of dataset should exist except if parent is a root group.
  • Writing nested compound data is only supported for OML data types logical/numbers.
  • Data read using readhdf5 command should be dereferenced. See Example 1.
  • If data is complex, an attribute with the name omlcomplex is added to the dataset, which is used while reading the dataset using the readhdf5 command.