Exporting to Hierarchical Data Format (HDF5) Files
Writing Data to an HDF5 Data Set Using the MATLAB Low-Level
Functions
This example shows how to use the MATLAB HDF5 low-level functions to
write a data set to an HDF5 file and then read the data set from the file.
1
Create the MATLAB variable that you want to write to the HDF5 file. The
examples creates a two-dimensional array of
uint8
data.
testdata = [1 3 5; 2 4 6];
2
Create the HDF5 file or open an existing file. The example creates a new
HDF5 file, named
my_file.h5
,in the system temp folder.
filename = fullfile(tempdir,'my_file.h5');
fileID = H5F.create(filename,'H5F_ACC_TRUNC','H5P_DEFAULT','H5P_DEFAULT');
In HDF5, use the
H5Fcreate
function to create a file. The example uses
the MATLAB equivalent,
H5F.create
. As arguments, specify the name
you want to assign to the file, the type of access you want to the file
(
'H5F_ACC_TRUNC'
in the example), and optional additional characteristics
specified by a file creation property list and a file access property list. This
example uses default values for these property lists (
'H5P_DEFAULT'
).
In the example, note how the C constants are passed to the MATLAB
functions as strings. The function returns an ID to the HDF5 file.
3
Create the data set in the file to hold the MATLAB variable. In the HDF5
programming model, you must define the data type and dimensionality
(data space) of the data set as separate entities.
a
Specify the data type used by the data set. In HDF5, use the
H5Tcopy
function to create integer or floating-point data types. The example uses
the corresponding MATLAB function,
H5T.copy
,to create a
double
data type because the MATLAB data is
double
.The function returns
adata type ID.
datatypeID = H5T.copy('H5T_NATIVE_DOUBLE');
b
Specify the dimensions of the data set. In HDF5, use the
H5Screate_simple
routine to create a data space. The example uses the
6-47
Pdf preview thumbnail - control software 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 preview thumbnail - control software 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
corresponding MATLAB function,
H5S.create_simple
,to specify the
dimensions. The function returns a data space ID.
Because HDF5 stores data in row-major order and the MATLAB array
is organized in column-major order, you should reverse the ordering of
the dimension extents before using
H5Screate_simple
to preserve the
layout of the data. You can use
fliplr
for this purpose. For a list of
other HDF5 functions that require dimension flipping, see “Preserving
the Correct Layout of Your Data” on page 6-50.
dims = size(testdata);
dataspaceID = H5S.create_simple(2, fliplr(dims), []);
Other software programs that use row-major ordering (such as H5DUMP
from the HDF Group) may report the size of the dataset to be 3-by-2
instead of 2-by-3.
c
Create the data set. In HDF5, you use the
H5Dcreate
routine to create
adata set. The example uses the corresponding MATLAB function,
H5D.create
,specifying the file ID, the name you want to assign to
the data set, data type ID, the data space ID, and a data set creation
property list ID as arguments. The example uses the defaults for the
property lists. The function returns a data set ID.
dsetname = 'my_dataset';
datasetID = H5D.create(fileID,dsetname,datatypeID,dataspaceID,'H5P_DEFAULT');
6-48
control software utility:How to C#: Preview Document Content Using XDoc.Word
With the SDK, you can preview the document content according to the preview thumbnail by the ways as following. C# DLLs for Word File Preview. Add references:
www.rasteredge.com
control software utility:How to C#: Preview Document Content Using XDoc.PowerPoint
With the SDK, you can preview the document content according to the preview thumbnail by the ways as following. C# DLLs: Preview PowerPoint Document.
www.rasteredge.com
Exporting to Hierarchical Data Format (HDF5) Files
Note To write a large data set, you must use the chunking capability
of the HDF5 library. To do this, create a property list and use the
H5P.set_chunk
function to set the chunk size in the property list. In the
following example, the dimensions of the data set are
dims = [2^16
2^16]
and the chunk size is 1024-by-1024. You then pass the property
list as the last argument to the data set creation function,
H5D.create
,
instead of using the
H5P_DEFAULT
value.
plistID = H5P.create('H5P_DATASET_CREATE'); % create property list
chunk_size = min([1024 1024], dims); % define chunk size
H5P.set_chunk(plistID, chunk_size); % set chunk size in property list
datasetID = H5D.create(fileID, dsetname, datatypeID, dataspaceID, plistID);
4
Write the data to the data set. In HDF5, use the
H5Dwrite
routine to write
data to a data set. The example uses the corresponding MATLAB function,
H5D.write
,specifying as arguments the data set ID, the memory data type
ID, the memory space ID, the data space ID, the transfer property list ID
and the name of the MATLAB variable to be written to the data set.
You can use the memory data type to specify the data type used to represent
the data in the file. The example uses the constant
'H5ML_DEFAULT'
which
lets the MATLAB function do an automatic mapping to HDF5 data types.
The memory data space ID and the data set’s data space ID specify to write
subsets of the data set to the file. The example uses the constant
'H5S_ALL'
to write all the data to the file and uses the default property list.
H5D.write(datasetID,'H5ML_DEFAULT','H5S_ALL','H5S_ALL', ...
'H5P_DEFAULT', testdata);
If you had not reversed the ordering of the dimension extents in step 3b
above, you would have been required to permute the MATLAB array before
using
H5D.write
,which could result in an enormous performance penalty.
5
Close the data set, data space, data type, and file objects. If used inside a
MATLAB function, these identifiers are closed automatically when they
go out of scope.
6-49
control software utility:How to C#: Set Image Thumbnail in C#.NET
VB.NET How-to, VB.NET PDF, VB.NET Word, VB.NET Excel, VB.NET PowerPoint, VB How to C#: Set Image Thumbnail in C#.NET. To Preview Images in WinForm Application.
www.rasteredge.com
control software utility:How to C#: Preview Document Content Using XDoc.excel
document in memory. With the SDK, you can preview the document content according to the preview thumbnail by the ways as following.
www.rasteredge.com
6
Scientific Data
H5D.close(datasetID);
H5S.close(dataspaceID);
H5T.close(datatypeID);
H5F.close(fileID);
6
To read the data set you wrote to the file, you must open the file. In HDF5,
you use the
H5Fopen
routine to open an HDF5 file, specifying the name of
the file, the access mode, and a property list as arguments. The example
uses the corresponding MATLAB function,
H5F.open
,opening the file for
read-only access.
fileID = H5F.open(filename,'H5F_ACC_RDONLY','H5P_DEFAULT');
7
After opening the file, you must open the data set. In HDF5, you use the
H5Dopen
function to open a data set. The example uses the corresponding
MATLAB function,
H5D.open
,specifying as arguments the file ID and the
name of the data set, defined earlier in the example.
datasetID = H5D.open(fileID, dsetname);
8
After opening the data set, you can read the data into the MATLAB
workspace. In HDF5, you use the
H5Dread
function to read an HDF5
file. The example uses the corresponding MATLAB function,
H5D.read
,
specifying as arguments the data set ID, the memory data type ID, the
memory space ID, the data space ID, and the transfer property list ID.
returned_data = H5D.read(datasetID,'H5ML_DEFAULT',...
'H5S_ALL','H5S_ALL','H5P_DEFAULT');
You can compare the original MATLAB variable,
testdata
,with the
variable just created,
data
,to see if they are the same.
Preserving the Correct Layout of Your Data
When you use any of the following functions that deal with dataspaces, you
should flip dimension extents to preserve the correct layout of the data,
as illustrated in step 3b in “Writing Data to an HDF5 Data Set Using the
MATLAB Low-Level Functions” on page 6-47.
H5D.set_extent
6-50
control software utility:How to C#: Generate Thumbnail for Word
Preview Document. Conversion. Convert Word to PDF. Convert Word Convert Word to ODT. Convert PDF to Word. Text Search. Insert Image. Thumbnail Create. Thumbnail Create
www.rasteredge.com
control software utility:How to C#: Generate Thumbnail for PowerPoint
Preview Document. Conversion. Convert PowerPoint to PDF. Convert PowerPoint to Pages. Annotate PowerPoint. Text Search. Insert Image. Thumbnail Create.
www.rasteredge.com
Exporting to Hierarchical Data Format (HDF5) Files
H5P.get_chunk
H5P.set_chunk
H5S.create_simple
H5S.get_simple_extent_dims
H5S.select_hyperslab
H5T.array_create
H5T.get_array_dims
6-51
control software utility:How to C#: Generate Thumbnail for Excel
Preview Document. Conversion. Convert Excel to PDF. Convert Excel to Insert Image. Thumbnail Create. Thumbnail Create. |. Home ›› XDoc.Excel ›› C# Excel
www.rasteredge.com
control software utility:How to C#: Overview of Using XDoc.PowerPoint
document (ODP). Empower to navigate PowerPoint document content quickly via thumbnail. Able to you want. Create Thumbnail. See this
www.rasteredge.com
6
Scientific Data
Importing Hierarchical Data Format (HDF4) Files
In this section...
“Overview” on page 6-52
“Using the MATLAB HDF4 High-Level Functions” on page 6-52
“Using the HDF4 Low-Level Functions” on page 6-56
“Using the HDF Import Tool” on page 6-63
“Using the HDF Import Tool Subsetting Options” on page 6-68
Overview
Hierarchical Data Format (HDF4) is a general-purpose, machine-independent
standard for storing scientific data in files, developed by the National
Center for Supercomputing Applications (NCSA). For more information
about these file formats, read the HDF documentation at the HDF Web site
(
www.hdfgroup.org
).
HDF-EOS is an extension of HDF4 that was developed by the National
Aeronautics and Space Administration (NASA) for storage of data returned
from the Earth Observing System (EOS). For more information about this
extension to HDF4, see the HDF-EOS documentation at the NASA Web site
(
www.hdfeos.org
).
MATLAB includes several options for importing HDF4 files, discussed in
the following sections.
Note For information about importing HDF5 data, which is a separate,
incompatible format, see “Importing Hierarchical Data Format (HDF5) Files”
on page 6-32.
Using the MATLAB HDF4 High-Level Functions
To import data from an HDF or HDF-EOS file, you can use the MATLAB
HDF4 high-level function
hdfread
. The
hdfread
function provides a
programmatic way to import data from an HDF4 or HDF-EOS file that still
6-52
control software utility:How to C#: Overview of Using XDoc.Word
Tell C# users how to: create a new Word file and load Word from pdf; merge, append, and split Word files; insert, delete, move, rotate, copy Create Thumbnail.
www.rasteredge.com
control software utility:How to C#: Overview of Using XDoc.Excel
Empower to navigate Excel document content quickly via thumbnail. Able to support text search in Excel document, as well as text extraction. Create Thumbnail.
www.rasteredge.com
Importing Hierarchical Data Format (HDF4) Files
hides many of the details that you need to know if you use the low-level HDF
functions, described in “Using the HDF4 Low-Level Functions” on page 6-56.
This section describes these high-level MATLAB HDF functions, including
• “Using hdfinfo to Get Information About an HDF4 File” on page 6-53
• “Using hdfread to Import Data from an HDF4 File” on page 6-53
To export data to an HDF4 file, you must use the MATLAB HDF4 low-level
functions.
Using hdfinfo to Get Information About an HDF4 File
To get information about the contents of an HDF4 file, use the
hdfinfo
function. The
hdfinfo
function returns a structure that contains information
about the file and the data in the file.
This example returns information about a sample HDF4 file included with
MATLAB:
info = hdfinfo('example.hdf')
info =
Filename: 'matlabroot\example.hdf'
Attributes: [1x2 struct]
Vgroup: [1x1 struct]
SDS: [1x1 struct]
Vdata: [1x1 struct]
To get information about the data sets stored in the file, look at the
SDS
field.
Using hdfread to Import Data from an HDF4 File
To use the
hdfread
function, you must specify the data set that you want to
read. You can specify the filename and the data set name as arguments, or
you can specify a structure returned by the
hdfinfo
function that contains
this information. The following example shows both methods. For information
about how to import a subset of the data in a data set, see “Reading a Subset
of the Data in a Data Set” on page 6-55.
6-53
6
Scientific Data
1
Determine the names of data sets in the HDF4 file, using the
hdfinfo
function.
info = hdfinfo('example.hdf')
info =
Filename: 'matlabroot\example.hdf'
Attributes: [1x2 struct]
Vgroup: [1x1 struct]
SDS: [1x1 struct]
Vdata: [1x1 struct]
To determine the names and other information about the data sets in the file,
look at the contents of the
SDS
field. The
Name
field in the SDS structure
gives the name of the data set.
dsets = info.SDS
dsets =
Filename: 'example.hdf'
Type: 'Scientific Data Set'
Name: 'Example SDS'
Rank: 2
DataType: 'int16'
Attributes: []
Dims: [2x1 struct]
Label: {}
Description: {}
Index: 0
2
Read the data set from the HDF4 file, using the
hdfread
function. Specify the
name of the data set as a parameter to the function. Note that the data set
name is case sensitive. This example returns a 16-by-5 array:
dset = hdfread('example.hdf', 'Example SDS')
dset =
3
4
5
6
7
6-54
Importing Hierarchical Data Format (HDF4) Files
4
5
6
7
8
5
6
7
8
9
6
7
8
9
10
7
8
9
10
11
8
9
10
11
12
9
10
11
12
13
10
11
12
13
14
11
12
13
14
15
12
13
14
15
16
13
14
15
16
17
14
15
16
17
18
15
16
17
18
19
16
17
18
19
20
17
18
19
20
21
18
19
20
21
22
Alternatively, you can specify the specific field in the structure returned by
hdfinfo
that contains this information. For example, to read a scientific
data set, use the
SDS
field.
dset = hdfread(info.SDS);
Reading a Subset of the Data in a Data Set. To read a subset of a data
set, you can use the optional
'index'
parameter. The value of the index
parameter is a cell array of three vectors that specify the location in the data
set to start reading, the skip interval (e.g., read every other data item), and
the amount of data to read (e.g., the length along each dimension). In HDF4
terminology, these parameters are called the start, stride, and edge values.
For example, this code
• Starts reading data at the third row, third column (
[3 3]
).
• Reads every element in the array (
[]
).
• Reads 10 rows and 2 columns (
[10 2]
).
subset = hdfread('Example.hdf','Example SDS',...
'Index',{[3 3],[],[10 2 ]})
subset =
6-55
6
Scientific Data
7
8
8
9
9
10
10
11
11
12
12
13
13
14
14
15
15
16
16
17
Using the HDF4 Low-Level Functions
This section describes how to use MATLAB functions to access the HDF4
Application Programming Interfaces (APIs). These APIs are libraries of C
routines. To import or export data, you must use the functions in the HDF4
API associated with the particular HDF4 data type you are working with.
Each API has a particular programming model, that is, a prescribed way
to use the routines to write data sets to the file. To illustrate this concept,
this section describes the programming model of one particular HDF4 API:
the HDF4 Scientific Data (SD) API. For a complete list of the HDF4 APIs
supported by MATLAB and the functions you use to access each one, see
the
hdf
reference page.
Note This section does not attempt to describe all HDF4 features and
routines. To use the MATLAB HDF4 functions effectively, you must refer to
the official NCSA documentation at the HDF Web site (
www.hdfgroup.org
).
This section includes the following:
• “Mapping HDF4 to MATLAB Syntax” on page 6-57
• “Step 1: Opening the HDF4 File” on page 6-58
• “Step 2: Retrieving Information About the HDF4 File” on page 6-59
• “Step 3: Retrieving Attributes from an HDF4 File (Optional)” on page 6-59
• “Step 4: Selecting the Data Sets to Import” on page 6-60
6-56
Documents you may be interested
Documents you may be interested