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.

Exportar a archivos NetCDF

Cree, combine y escriba archivos NetCDF mediante funciones de alto nivel y las funciones de bajo nivel del paquete.netcdf

Capacidades NetCDFMATLAB

El formulario de datos comunes de red (NetCDF) es un conjunto de bibliotecas de software y formatos de datos independientes de la máquina que admiten la creación, el acceso y el uso compartido de datos científicos orientados a arreglos de discos. NetCDF es utilizado por una amplia gama de campos de ingeniería y científicos que quieren una forma estándar de almacenar datos para que puedan compartirse.

funciones de alto nivel facilitan la exportación de datos a un archivo netCDF. las funciones de bajo nivel proporcionan acceso a las rutinas de la biblioteca NetCDF C.MATLAB®MATLAB Para utilizar eficazmente las funciones de bajo nivel, debe estar familiarizado con la interfaz de NetCDF C. La documentación de NetCDF está disponible en el.El sitio web de unidata

Nota

Para obtener información sobre cómo exportar a archivos de formato de datos comunes (CDF), que tienen un formato independiente e incompatible, consulte.Exportar a archivos CDF

Crear nuevo archivo NetCDF a partir de archivo existente o plantilla

En este ejemplo se muestra cómo crear un nuevo archivo NetCDF que contiene las definiciones de variable, dimensión y grupo de un archivo existente, pero utiliza un formato diferente.

Cree un archivo que contenga una variable, utilizando la función.nccreate

nccreate('myfile.nc','myvar')

Escribir datos en el archivo.

A = 99; ncwrite('myfile.nc','myvar',A)

Lea las definiciones de variables, dimensiones y grupos del archivo utilizando.ncinfo Esta información define el archivo.schema

S = ncinfo('myfile.nc');

Obtenga el formato del archivo.

file_fmt = S.Format
file_fmt =  'netcdf4_classic' 

Cambie el valor del campo en la estructura, a otro formato NetCDF admitido.FormatS

S.Format = 'netcdf4';

Cree una nueva versión del archivo que utilice el nuevo formato, utilizando la función.ncwriteschema Un esquema define la estructura del archivo, pero no contiene ninguno de los datos que estaban en el archivo original.

ncwriteschema('newfile.nc',S) S = ncinfo('newfile.nc');

Al convertir el formato de un archivo mediante, es posible que reciba un mensaje de advertencia si el formato de archivo original incluye campos que no son compatibles con el nuevo formato.Note:ncwriteschema Por ejemplo, el formato netcdf4 admite valores de relleno, pero el formato clásico de NetCDF no lo hace. En estos casos, sigue creando el archivo, pero omite el campo que no está definido en el nuevo formato.ncwriteschema

Ver el formato del nuevo archivo.

new_fmt = S.Format
new_fmt =  'netcdf4' 

El nuevo archivo, contiene las definiciones de variables y dimensiones de, pero no contiene los datos.newfile.ncmyfile.nc

Escribir datos en el nuevo archivo.

ncwrite('newfile.nc','myvar',A)

Fusionar dos archivos NetCDF

Este ejemplo muestra cómo fusionar dos archivos NetCDF mediante funciones de alto nivel. El archivo combinado contiene las definiciones de variables y dimensiones de los archivos que se combinan, pero no contiene los datos de estos archivos originales.

Cree un archivo NetCDF denominado y defina una variable denominada.ex1.ncmyvar A continuación, escriba los datos en la variable y muestre el contenido del archivo.

nccreate('ex1.nc','myvar'); ncwrite('ex1.nc','myvar',55) ncdisp('ex1.nc')
Source:
           pwd\ex1.nc
Format:
           netcdf4_classic
Variables:
    myvar
           Size:       1x1
           Dimensions: 
           Datatype:   double

Cree un segundo archivo y defina una variable denominada.myvar2 A continuación, escriba los datos en la variable y muestre el contenido del archivo.

nccreate('ex2.nc','myvar2'); ncwrite('ex2.nc','myvar2',99) ncdisp('ex2.nc')
Source:
           pwd\ex2.nc
Format:
           netcdf4_classic
Variables:
    myvar2
           Size:       1x1
           Dimensions: 
           Datatype:   double

Obtenga el esquema de cada uno de los archivos, utilizando la función.ncinfo

info1 = ncinfo('ex1.nc')
info1 = 

      Filename: 'pwd\ex1.nc'
          Name: '/'
    Dimensions: []
     Variables: [1x1 struct]
    Attributes: []
        Groups: []
        Format: 'netcdf4_classic'
info2 = ncinfo('ex2.nc')
info2 = 

      Filename: 'pwd\ex2.nc'
          Name: '/'
    Dimensions: []
     Variables: [1x1 struct]
    Attributes: []
        Groups: []
        Format: 'netcdf4_classic'

Cree un nuevo archivo NetCDF que utilice el esquema del primer archivo de ejemplo, utilizando la función.ncwriteschema A continuación, visualice el contenido del archivo.

ncwriteschema('combined.nc',info1) ncdisp('combined.nc')
Source:
           pwd\combined.nc
Format:
           netcdf4_classic
Variables:
    myvar
           Size:       1x1
           Dimensions: 
           Datatype:   double
           Attributes:
                       _FillValue = 9.969209968386869e+36

Agregue el esquema de a, using.ex2.nccombined.ncncwriteschema

ncwriteschema('combined.nc',info2)

Ver el contenido del archivo combinado.

ncdisp('combined.nc')
Source:
           pwd\combined.nc
Format:
           netcdf4_classic
Variables:
    myvar 
           Size:       1x1
           Dimensions: 
           Datatype:   double
           Attributes:
                       _FillValue = 9.969209968386869e+36
    myvar2
           Size:       1x1
           Dimensions: 
           Datatype:   double
           Attributes:
                       _FillValue = 9.969209968386869e+36

El archivo contiene la variable definida en el primer archivo de ejemplo y la variable definida en el segundo archivo.myvarmyvar2

Escribir datos en el archivo NetCDF mediante funciones de bajo nivel

En este ejemplo se muestra cómo utilizar funciones de bajo nivel para escribir datos en un archivo NetCDF. Las funciones de bajo nivel de MATLAB® proporcionan acceso a las rutinas de la biblioteca de NetCDF C. MATLAB agrupa las funciones en un paquete, llamado.netcdf Para llamar a una de las funciones del paquete, debe anteponer el nombre de la función al nombre del paquete.

Para utilizar eficazmente las funciones de MATLAB NetCDF, debe familiarizarse con la información sobre la interfaz de NetCDF C.

Para ejecutar este ejemplo, debe tener permiso de escritura en la carpeta actual.

Cree una variable de 1 por 50 de valores numéricos nombrados en el espacio de trabajo de MATLAB.my_data El vector es de clase.double

my_data = linspace(0,49,50);

Cree un archivo NetCDF con el nombre, utilizando la función.my_file.ncnetcdf.create El parámetro es una constante de acceso a archivos NetCDF que indica que no desea sobrescribir un archivo existente con el mismo nombre.NOCLOBBER

ncid = netcdf.create('my_file.nc','NOCLOBBER');

Devuelve un identificador de archivo,.netcdf.createncid Cuando se crea un archivo NetCDF, el archivo se abre en modo de definición. Debe estar en modo de definición para definir cotas y variables.

Defina una cota en el archivo, utilizando la función.netcdf.defDim Esta función corresponde a la función de la API de C de la biblioteca NetCDF.nc_def_dim Debe definir cotas en el archivo para poder definir variables y escribir datos en el archivo. En este caso, defina una cota denominada con la longitud 50.my_dim

dimid = netcdf.defDim(ncid,'my_dim',50)
dimid = 0 

Devuelve un identificador de dimensión que corresponde a la nueva dimensión.netcdf.defDim Los identificadores son índices basados en cero.

Defina una variable denominada en la cota, utilizando la función.my_varnetcdf.defVar Esta función corresponde a la función de la API de C de la biblioteca NetCDF.nc_def_var Especifique el tipo de datos NetCDF de la variable, en este caso,.NC_BYTE

varid = netcdf.defVar(ncid,'my_var','NC_BYTE',dimid)
varid = 0 

Devuelve un identificador de variable que corresponde a.netcdf.defVarmy_var

Tome el archivo NetCDF fuera del modo de definición. Para escribir datos en un archivo, debe estar en modo de datos.

netcdf.endDef(ncid)

Escriba los datos del espacio de trabajo de MATLAB en la variable del archivo NetCDF, utilizando la función.netcdf.putVar Los datos del espacio de trabajo son de clase, pero la variable en el archivo NetCDF es de tipo.doubleNC_BYTE Las funciones de MATLAB NetCDF hacen automáticamente la conversión.

netcdf.putVar(ncid,varid,my_data)

Cierre el archivo, utilizando la función.netcdf.close

netcdf.close(ncid)

Compruebe que los datos se han escrito en el archivo abriendo el archivo y leyendo los datos de la variable en una nueva variable en el área de trabajo de MATLAB.

ncid2 = netcdf.open('my_file.nc','NC_NOWRITE'); x = netcdf.getVar(ncid2,0);

Ver el tipo de datos de.x

whos x
  Name       Size            Bytes  Class    Attributes    x         50x1                50  int8                

MATLAB almacena los datos en orden de columna-mayor mientras que la API de NetCDF C utiliza el orden principal de filas. representa los datos almacenados en el archivo NetCDF y, por lo tanto, 50 por 1, aunque el vector original en el área de trabajo de MATLAB, es 1-por-50.xmy_data Dado que ha almacenado los datos en el archivo NetCDF como, MATLAB Lee los datos de la variable en el espacio de trabajo como clase.NC_BYTEint8

Cierre el archivo.

netcdf.close(ncid2)

Consulte también

Temas relacionados

Sitios web externos