Importing Hierarchical Data Format (HDF5) Files
To illustrate, this example reads the data set,
/g2/dset2.1
from the HDF5
sample file
example.h5
.
data = h5read('example.h5','/g2/dset2.1')
data =
1.0000
1.1000
1.2000
1.3000
1.4000
1.5000
1.6000
1.7000
1.8000
1.9000
Mapping HDF5 Datatypes to MATLAB Datatypes
When the
h5read
function reads data from an HDF5 file into the MATLAB
workspace, it maps HDF5 data types toMATLAB data types, as shown in
the table below.
HDF5 Data Type
h5read Returns
Bit-field
Array of packed 8-bit integers
Float
MATLAB single and double types, provided
that they occupy 64 bits or fewer
Integer types, signed and
unsigned
Equivalent MATLAB integer types, signed
and unsigned
Opaque
Array of
uint8
values
Reference
Returns the actual data pointed to by the
reference, not the value of the reference.
Strings, fixed-length and
variable length
Cell array of strings
6-37
Pdf thumbnail generator online - application SDK utility:C# PDF Thumbnail Create SDK: Draw thumbnail images for PDF in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Support Thumbnail Generation with Various Options for Quick PDF Navigation
www.rasteredge.com
Pdf thumbnail generator online - application SDK utility:VB.NET PDF Thumbnail Create SDK: Draw thumbnail images for PDF in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Support Thumbnail Generation with Various Options for Quick PDF Navigation
www.rasteredge.com
6
Scientific Data
HDF5 Data Type
h5read Returns
Enums
Cell array of strings, where each enumerated
value is replaced by the corresponding member
name
Compound
1-by-1 struct array; the dimensions of the
dataset are expressed in the fields of the
structure.
Arrays
Array of values using the same datatype as
the HDF5 array. For example, if the array is
of signed 32-bit integers, the MATLAB array
will be of type
int32
.
The example HDF5 file included with MATLAB includes examples of all
these datatypes.
For example, the data set
/g3/string
is a string.
h5disp('example.h5','/g3/string')
HDF5 example.h5
Dataset 'string'
Size:
2
MaxSize:
2
Datatype:
H5T_STRING
String Length: 3
Padding: H5T_STR_NULLTERM
Character Set: H5T_CSET_ASCII
Character Type: H5T_C_S1
ChunkSize:
[]
Filters:
none
FillValue:
''
Now read the data from the file, MATLAB returns it as a cell array of strings.
s = h5read('example.h5','/g3/string')
s =
'ab '
6-38
application SDK utility:VB.NET Image: Program for Creating Thumbnail from Documents and
multiple document and image formats, such as PDF, TIFF, GIF version of RasterEdge .NET Imaging SDK online and you can use the thumbnail creation control
www.rasteredge.com
application SDK utility:How to C#: Generate Thumbnail for Word
VB.NET How-to, VB.NET PDF, VB.NET Word, VB.NET Excel NET Twain, VB.NET Barcode Read, VB.NET Barcode Generator, view less. How to C#: Generate Thumbnail for Word.
www.rasteredge.com
Importing Hierarchical Data Format (HDF5) Files
'de '
>> whos s
Name
Size
Bytes
Class
Attributes
s
2x1
236
cell
The compound data types are always returned as a 1-by-1 struct. The
dimensions of the data set are expressed in the fields of the struct. For
example, the data set
/g3/compound2D
is a compound datatype.
h5disp('example.h5','/g3/compound2D')
HDF5 example.h5
Dataset 'compound2D'
Size:
2x3
MaxSize:
2x3
Datatype:
H5T_COMPOUND
Member 'a':
H5T_STD_I8LE (int8)
Member 'b':
H5T_IEEE_F64LE (double)
ChunkSize:
[]
Filters:
none
FillValue:
H5T_COMPOUND
Now read the data from the file, MATLAB returns it as a 1-by-1 struct.
data = h5read('example.h5','/g3/compound2D')
data =
a: [2x3 int8]
b: [2x3 double]
Using the Low-Level HDF5 Functions to Import Data
MATLAB provides direct access to dozens of functions in the HDF5 library
with low-level functions that correspond to the functions in the HDF5
library. In this way, you can access the features of the HDF5 library from
MATLAB, such as reading and writing complex data types and using the
HDF5 subsetting capabilities. For more information, see “Using the MATLAB
Low-Level HDF5 Functions to Export Data” on page 6-41.
6-39
application SDK utility:How to C#: Generate Thumbnail for PowerPoint
VB.NET How-to, VB.NET PDF, VB.NET Word, VB.NET NET Twain, VB.NET Barcode Read, VB.NET Barcode Generator, view less. How to C#: Generate Thumbnail for PowerPoint.
www.rasteredge.com
application SDK utility:How to C#: Set Image Thumbnail in C#.NET
VB.NET How-to, VB.NET PDF, VB.NET Word, VB.NET Excel NET Twain, VB.NET Barcode Read, VB.NET Barcode Generator, view less. How to C#: Set Image Thumbnail in C#.NET
www.rasteredge.com
6
Scientific Data
Exporting to Hierarchical Data Format (HDF5) Files
In this section...
“Overview” on page 6-40
“Using the MATLAB High-Level HDF5 Functions to Export Data” on page
6-40
“Using the MATLAB Low-Level HDF5 Functions to Export Data” on page
6-41
Overview
Hierarchical Data Format, Version 5, (HDF5) is a general-purpose,
machine-independent standard for storing scientific data in files, developed
by the National Center for Supercomputing Applications (NCSA). HDF5 is
used by a wide range of engineering and scientific fields that want a standard
way to store data so that it can be shared. For more information about the
HDF5 file format, read the HDF5 documentation available at the HDF Web
site (
http://www.hdfgroup.org
).
MATLAB provides two methods to export data to an HDF5 file:
• High-level functions that simplify the process of exporting data, when
working with numeric datasets
• Low-level functions that provide a MATLAB interface to routines in the
HDF5 C library
Note For information about exporting to HDF4 files, which have a completely
separate and incompatible format, see “Exporting to Hierarchical Data
Format (HDF4) Files” on page 6-82.
Using the MATLAB High-Level HDF5 Functions to
Export Data
The easiest way to write data or metadata from the MATLAB workspace to
an HDF5 file is to use these MATLAB high-level functions.
6-40
application SDK utility:Create Thumbnail in Web Image Viewer | Online Tutorials
You Wish; Annotate & Redact Documents or Images; Create Thumbnail; NET; XDoc.Converter for .NET; XDoc.PDF for .NET; Reader for .NET; XImage.Barcode Generator for
www.rasteredge.com
application SDK utility:Create Thumbnail Winforms | Online Tutorials
Create Thumbnail; Generate Barcodes on Your Documents; Read Barcodes XDoc.Converter for .NET; XDoc.PDF for .NET; Reader for .NET; XImage.Barcode Generator for .NET
www.rasteredge.com
Exporting to Hierarchical Data Format (HDF5) Files
Note You can use the high-level functions only with numeric data. To write
nonnumeric data, you must use the low-level interface.
h5create
—Create an HDF5 dataset
h5write
—Write data to an HDF5 dataset
h5writeatt
—Write data to an HDF5 attribute
For details about how to use these functions, see their reference pages, which
include examples. The following sections illustrate some common usage
scenarios.
Writing a Numeric Array to an HDF5 Dataset
This example creates an array and then writes the array to an HDF5 file.
1
Create a MATLAB variable in the workspace. This example creates a 5-by-5
array of
uint8
values.
testdata = uint8(magic(5))
2
Create the HDF5 file and the dataset, using
h5create
.
h5create('my_example_file.h5', '/dataset1', size(testdata))
3
Write the data to the HDF5 file.
h5write('my_example_file.h5', '/dataset1', testdata)
Using the MATLAB Low-Level HDF5 Functions to
Export Data
MATLAB provides direct access to dozens of functions in the HDF5 library
with low-level functions that correspond to the functions in the HDF5
library. In this way, you can access the features of the HDF5 library from
MATLAB, such as reading and writing complex data types and using the
HDF5 subsetting capabilities. For more information, see “Using the MATLAB
Low-Level HDF5 Functions to Export Data” on page 6-41.
6-41
application SDK utility:How to C#: Generate Thumbnail for Raster
VB.NET How-to, VB.NET PDF, VB.NET Word, VB.NET Excel NET Twain, VB.NET Barcode Read, VB.NET Barcode Generator, view less. How to C#: Generate Thumbnail for Raster
www.rasteredge.com
application SDK utility:How to C#: Overview of Using XImage.Raster
Empower to navigate image(s) content quickly via thumbnail. Able to support text extract with OCR. You may edit the tiff document easily. Create Thumbnail.
www.rasteredge.com
6
Scientific Data
The HDF5 library organizes the library functions into collections, called
interfaces. For example, all the routines related to working with files, such
as opening and closing, are in the H5F interface, where F stands for file.
MATLAB organizes the low-level HDF5 functions into classes that correspond
to each HDF5 interface. For example, the MATLAB functions that correspond
to the HDF5 file interface (H5F) are in the @H5F class folder.
The following sections provide more detail about how to use the MATLAB
HDF5 low-level functions.
• “Mapping HDF5 Function Syntax to MATLAB Function Syntax” on page
6-42
• “Mapping Between HDF5 Data Types and MATLAB Data Types” on page
6-45
• “Reporting Data Set Dimensions” on page 6-46
• “Writing Data to an HDF5 Data Set Using the MATLAB Low-Level
Functions” on page 6-47
• “Preserving the Correct Layout of Your Data” on page 6-50
Note This section does not describe all features of the HDF5 library or
explain basic HDF5 programming concepts. To use the MATLAB HDF5
low-level functions effectively, refer to the official HDF5 documentation
available at
http://www.hdfgroup.org
.
Mapping HDF5 Function Syntax to MATLAB Function Syntax
In most cases, the syntax of the MATLAB low-level HDF5 functions matches
the syntax of the corresponding HDF5 library functions. For example, the
following is the function signature of the
H5Fopen
function in the HDF5
library. In the HDF5 function signatures,
hid_t
and
herr_t
are HDF5 types
that return numeric values that represent object identifiers or error status
values.
hid_t H5Fopen(const char *name, unsigned flags, hid_t access_id) /* C syntax */
6-42
Exporting to Hierarchical Data Format (HDF5) Files
In MATLAB, each function in an HDF5 interface is a method of a MATLAB
class. To view the function signature for a function, specify the class folder
name and then the function name, as in the following.
help @H5F/open
The following shows the signature of the corresponding MATLAB function.
First note that, because it’s a method of a class, you must use the dot notation
to call the MATLAB function:
H5F.open
.This MATLAB function accepts the
same three arguments as the HDF5 function: a text string for the name,
an HDF5-defined constant for the flags argument, and an HDF5 property
list ID. You use property lists to specify characteristics of many different
HDF5 objects. In this case, it’s a file access property list. Refer to the HDF5
documentation to see which constants can be used with a particular function
and note that, in MATLAB, constants are passed as text strings.
file_id = H5F.open(name, flags, plist_id)
There are, however, some functions where the MATLAB function signature
is different than the corresponding HDF5 library function. The following
describes some general differences that you should keep in mind when using
the MATLAB low-level HDF5 functions.
• HDF5 output parameters become MATLAB return values — Some
HDF5 library functions use function parameters to return data. Because
MATLAB functions can return multiple values, these output parameters
become return values. To illustrate, the HDF5
H5Dread
function returns
data in the
buf
parameter.
herr_t H5Dread(hid_t dataset_id,
hid_t mem_type_id,
hid_t mem_space_id,
hid_t file_space_id,
hid_t xfer_plist_id,
void * buf )
/* C syntax */
The corresponding MATLAB function changes the output parameter
buf
into a return value. Also, in the MATLAB function, the nonzero or negative
value
herr_t
return values become MATLAB errors. Use MATLAB
try
-
catch
statements to handle errors.
6-43
6
Scientific Data
buf = H5D.read(dataset_id,
mem_type_id,
mem_space_id,
file_space_id,
plist_id)
• String length parameters are unnecessary — The length parameter,
used by some HDF5 library functions to specify the length of a string
parameter, is not necessary in the corresponding MATLAB function. For
example, the
H5Aget_name
function in the HDF5 library includes a buffer
as an output parameter and the size of the buffer as an input parameter.
ssize_t H5Aget_name(hid_t attr_id,
size_t buf_size,
char *buf ) /* C syntax */
The corresponding MATLAB function changes the output parameter
buf
into a return value and drops the
buf_size
parameter.
buf = H5A.get_name(attr_id)
• Use an empty array to specify NULL — Wherever HDF5 library
functions accept the value
NULL
,the corresponding MATLAB function uses
empty arrays (
[]
). For example, the
H5Dfill
function in the HDF5 library
accepts the value
NULL
in place of a specified fill value.
herr_t H5Dfill(const void *fill,
hid_t fill_type_id, void *buf,
hid_t buf_type_id,
hid_t space_id ) /* C syntax */
When using the corresponding MATLAB function, you can specify an
empty array (
[]
)instead of
NULL
.
• Use cell arrays to specify multiple constants — Some functions in the
HDF5 library require you to specify an array of constants. For example,
in the
H5Screate_simple
function, to specify that a dimension in the
data space can be unlimited, you use the constant
H5S_UNLIMITED
for the
dimension in
maxdims
. In MATLAB, because you pass constants as text
strings, you must use a cell array to achieve the same result. The following
code fragment provides an example of using a cell array to specify this
constant for each dimension of this data space.
6-44
Exporting to Hierarchical Data Format (HDF5) Files
ds_id = H5S.create_simple(2,[3 4],{'H5S_UNLIMITED' 'H5S_UNLIMITED'});
Mapping Between HDF5 Data Types and MATLAB Data Types
When the HDF5 low-level functions read data from an HDF5 file or write
data to an HDF5 file, the functions map HDF5 data types to MATLAB data
types automatically.
For atomic data types, such as commonly used binary formats for numbers
(integers and floating point) and characters (ASCII), the mapping is typically
straightforward because MATLAB supports similar types. See the table
Mapping Between HDF5 Atomic Data Types and MATLAB® Data Types on
page 6-45 for a list of these mappings.
Mapping Between HDF5 Atomic Data Types and MATLAB Data Types
HDF5 Atomic
Data Type
MATLAB Data Type
Bit-field
Array of packed 8-bit integers
Float
MATLAB single and double types, provided that they
occupy 64 bits or fewer
Integer types,
signed and
unsigned
Equivalent MATLAB integer types, signed and
unsigned
Opaque
Array of
uint8
values
Reference
Array of
uint8
values
String
MATLAB character arrays
For composite data types, such as aggregations of one or more atomic data
types into structures, multidimensional arrays, and variable-length data
types (one-dimensional arrays), the mapping is sometimes ambiguous with
reference to the HDF5 data type. In HDF5, a 5-by-5 data set containing
asingle
uint8
value in each element is distinct from a 1-by-1 data set
containing a 5-by-5 array of
uint8
values. In the first case, the data set
contains 25 observations of a single value. In the second case, the data set
6-45
6
Scientific Data
contains a single observation with 25 values. In MATLAB both of these data
sets are represented by a 5-by-5 matrix.
If your data is a complex data set, you might need to create HDF5 data
types directly to make sure you have the mapping you intend. See the table
Mapping Between HDF5 Composite Data Types and MATLAB® Data Types
on page 6-46 for a list of the default mappings. You can specify the data type
when you write data to the file using the
H5Dwrite
function. See the HDF5
data type interface documentation for more information.
Mapping Between HDF5 Composite Data Types and MATLAB Data
Types
HDF5 Composite
Data Type
MATLAB Data Type
Array
Extends the dimensionality of the data type which
it contains. For example, an array of an array of
integers in HDF5 would map onto a two dimensional
array of integers in MATLAB.
Compound
MATLAB structure. Note: All structures representing
HDF5 data in MATLAB are scalar.
Enumeration
Array of integers which each have an associated name
Variable Length
MATLAB 1-D cell arrays
Reporting Data Set Dimensions
The MATLAB low-level HDF5 functions report data set dimensions and the
shape of data sets differently than the MATLAB high-level functions. For
ease of use, the MATLAB high-level functions report data set dimensions
consistent with MATLAB column-major indexing. To be consistent with
the HDF5 library, and to support the possibility of nested data sets and
complicated data types, the MATLAB low-level functions report array
dimensions using the C row-major orientation.
6-46
Documents you may be interested
Documents you may be interested