Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Importar archivos HDF4 programáticamente

Visión general

El formato de datos jerárquicos (HDF4) es un estándar de uso general, independiente de la máquina para almacenar datos científicos en archivos, desarrollado por el centro nacional para aplicaciones de Supercomputación (NCSA). Para obtener más información acerca de estos formatos de archivo, lea la documentación de HDF en el sitio web de HDF (www.hdfgroup.org).

HDF-EOS es una extensión de HDF4 que fue desarrollada por la administración nacional de Aeronáutica y el espacio (NASA) para el almacenamiento de datos devueltos por la tierra Observando el sistema (EOS). Para obtener más información acerca de esta extensión a HDF4, consulte la documentación de HDF-EOS en el sitio web de la NASA (www.hdfeos.org).

incluye varias opciones para importar archivos HDF4, discutidos en las siguientes secciones.MATLAB®

Nota

Para obtener información sobre la importación de datos HDF5, que es un formato independiente e incompatible, consulte.Importar archivos HDF5

El uso de las funciones de alto nivel HDF4MATLAB

Para importar datos desde un archivo HDF o HDF-EOS, puede utilizar la función de alto nivel HDF4.MATLABhdfread La función proporciona una forma programática para importar datos desde un archivo HDF4 o HDF-EOS que todavía oculta muchos de los detalles que necesita saber si utiliza las funciones HDF de bajo nivel, descritas en.hdfreadImportar archivos HDF4 mediante funciones de bajo nivel

En esta sección se describen estas funciones de alto nivel de HDF, incluidasMATLAB

Para exportar datos a un archivo HDF4, debe utilizar las funciones de bajo nivel HDF4.MATLAB

Utilizando hdfinfo para obtener información sobre un archivo HDF4

Para obtener información sobre el contenido de un archivo HDF4, utilice la función.hdfinfo La función devuelve una estructura que contiene información sobre el archivo y los datos del archivo.hdfinfo

Este ejemplo devuelve información sobre un archivo HDF4 de ejemplo incluido con:MATLAB

info = hdfinfo('example.hdf') 
info =         Filename: 'matlabroot\example.hdf'     Attributes: [1x2 struct]         Vgroup: [1x1 struct]            SDS: [1x1 struct]          Vdata: [1x1 struct]

Para obtener información sobre los conjuntos de datos almacenados en el archivo, mire el campo.SDS

Uso de hdfread para importar datos desde un archivo HDF4

Para utilizar la función, debe especificar el conjunto de datos que desea leer.hdfread Puede especificar el nombre del archivo y del conjunto de datos como argumentos, o puede especificar una estructura devuelta por la función que contiene esta información.hdfinfo En el ejemplo siguiente se muestran ambos métodos. Para obtener información sobre cómo importar un subconjunto de los datos de un conjunto de datos, consulte.Leer un subconjunto de los datos de un conjunto de datos

  1. Determine los nombres de los conjuntos de datos en el archivo HDF4, utilizando la función.hdfinfo

    info = hdfinfo('example.hdf') 
    info =         Filename: 'matlabroot\example.hdf'     Attributes: [1x2 struct]         Vgroup: [1x1 struct]            SDS: [1x1 struct]          Vdata: [1x1 struct]

    Para determinar los nombres y otra información sobre los conjuntos de datos en el archivo, mire el contenido del campo.SDS El campo de la estructura de SDS proporciona el nombre del conjunto de datos.Name

    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. Lea el conjunto de datos del archivo HDF4, utilizando la función.hdfread Especifique el nombre del conjunto de datos como un parámetro para la función. Tenga en cuenta que el nombre del conjunto de datos distingue mayúsculas de minúsculas. Este ejemplo devuelve una matriz de 16 por 5:

    dset = hdfread('example.hdf', 'Example SDS') 
    dset =        3      4      5      6      7       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

    Como alternativa, puede especificar el campo específico en la estructura devuelta por que contiene esta información.hdfinfo Por ejemplo, para leer un conjunto de datos científicos, utilice el campo.SDS

    dset = hdfread(info.SDS); 

Leer un subconjunto de los datos de un conjunto de datos.  Para leer un subconjunto de un conjunto de datos, puede usar el parámetro opcional.'index' El valor del parámetro index es una matriz de celdas de tres vectores que especifican la ubicación en el conjunto de datos para iniciar la lectura, el intervalo de omisión (por ejemplo, leer todos los demás elementos de datos) y la cantidad de datos que se leen (por ejemplo, la longitud a lo largo de cada dimensión). En la terminología HDF4, estos parámetros se denominan los valores, y.startstrideedge

Por ejemplo, este código

  • Comienza a leer los datos en la tercera fila, tercera columna ().[3 3]

  • Lee todos los elementos de la matriz ().[]

  • Lee 10 filas y 2 columnas ().[10 2]

    subset = hdfread('Example.hdf','Example SDS',...                  'Index',{[3 3],[],[10 2 ]}) 
    subset =        7      8       8      9       9     10      10     11      11     12      12     13      13     14      14     15      15     16      16     17