Using HDF5 in MATLAB - HDF-EOS

Download Report

Transcript Using HDF5 in MATLAB - HDF-EOS

®
®
Jeff Mather
The MathWorks
HDF/HDF-EOS Workshop XI (Nov. 2007)
© 2007 The MathWorks, Inc.
Using HDF5 in MATLAB
®
®
What is MATLAB?
 A high-level programming language.
 An interactive design, exploration, and simulation environment.
 A platform for performing diverse tasks in many disciplines:










Math and Optimization
Statistics and Data Analysis
Control System Design and Analysis
Signal Processing and Communications
Image Processing
Test & Measurement
Financial Modeling and Analysis
Application Deployment
Database Connectivity and Reporting
Distributed Computing
2
®
®
MATLAB’s support for HDF products
HDF4 (v4.2r1)
HDF-EOS2 (v2.12v1.00)
HDF5 (v1.6.5)
3
®
®
A typical HDF5 function
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 )
success = H5Dread(dataset, H5T_STD_I32BE, H5S_ALL,
H5S_ALL, H5P_DEFAULT, buffer);
4
®
®
A typical HDF5 function
herr_t H5Dread(hid_t dataset_id,
hid_t mem_type_id,
hid_t mem_space_id,
hid_t file_space_id,
(1) Note the void*.
hid_t xfer_plist_id,
void * buf )
(2) Note the frequent
use of defined values
and “constants.”
success = H5Dread(dataset, H5T_STD_I32BE, H5S_ALL,
H5S_ALL, H5P_DEFAULT, buffer);
(3) Note the success value
on the left-hand side.
(4) Note the appearance of
output on the right-hand side.
5
®
®
A typical MATLAB function
[N, X] = hist(DATA)
 Multiple left-hand arguments.
 Outputs on the left, inputs on the right.
 Very weakly typed.
6
®
®
Calling an HDF5 function in MATLAB
C
success = H5Dread(dataset, H5T_STD_I32BE, H5S_ALL,
H5S_ALL, H5P_DEFAULT, buffer);
MATLAB
buffer = H5D.read(dataset, ‘H5T_STD_I32BE’, ‘H5S_ALL’,
‘H5S_ALL’, ‘H5P_DEFAULT’)
7
®
®
Let’s look at examples in MATLAB…
8
®
®
The H5ML interface
H5ML.compare_values
H5ML.get_constant_names
H5ML.get_constant_value
H5ML.get_function_names
+
H5ML.id
H5ML.get_mem_datatype
H5ML.hoffset
H5ML.sizeof
9
®
®
Getting help
 To see what’s in a package: “help H5D”
 For help on an HDF5 function: “help H5D.read”
 To use the full power of HDF5, you need to understand the C or
Fortran interface.
 E-mail [email protected].
10