文档

导出到NetCDF文件

MATLABNetCDF功能

网络通用数据表(NetCDF)是一组软件库和独立于机器的数据格式,支持创建、访问和共享面向数组的科学数据。万博1manbetxNetCDF被广泛的工程和科学领域所使用,这些领域需要一种标准的方式来存储数据,以便共享数据。

MATLAB®高级函数可以很容易地将数据导出到netCDF文件。MATLAB底层函数提供了对NetCDF C库中的例程的访问。为了有效地使用底层函数,您应该熟悉NetCDF C接口。NetCDF文档可在Unidata网站

请注意

有关导出到具有独立且不兼容格式的通用数据格式(Common Data Format, CDF)文件的信息,请参见导出到CDF文件

从现有文件或模板创建新的NetCDF文件

这个例子展示了如何创建一个新的NetCDF文件,该文件包含现有文件的变量、维度和组定义,但使用不同的格式。

方法创建包含一个变量的文件nccreate函数。

nccreate (“myfile.nc”“myvar#”

将数据写入文件。

A = 99;ncwrite (“myfile.nc”“myvar#”,)

从文件中读取变量、维度和组定义ncinfo.该信息定义了文件的模式

S = ncinfo(“myfile.nc”);

获取文件的格式。

file_fmt = S.Format
File_fmt = 'netcdf4_classic'

的值格式结构中的场,年代,转换为另一种支持的Net万博1manbetxCDF格式。

S.Format =“netcdf4”

方法创建使用新格式的文件的新版本ncwriteschema函数。模式定义了文件的结构,但不包含原始文件中的任何数据。

ncwriteschema (“newfile.nc”,S) S = ncinfo(“newfile.nc”);

注意:当使用转换文件格式时ncwriteschema,如果原始文件格式包含新格式不支持的字段,则可能会收到警告消息。万博1manbetx例如,netcdf4格式支持填充值,但NetCDF经典格式不支持万博1manbetx。在这些情况下,ncwriteschema仍然创建文件,但省略了新格式中未定义的字段。

查看新文件的格式。

new_fmt = s
New_fmt = 'netcdf4'

新文件,newfile.nc的变量和维度定义myfile.nc,但不包含数据。

向新文件写入数据。

ncwrite (“newfile.nc”“myvar#”,)

合并两个NetCDF文件

这个例子展示了如何使用高级函数合并两个NetCDF文件。组合文件包含被组合文件的变量和维度定义,但不包含这些原始文件中的数据。

创建NetCDF文件名为ex1.nc并定义一个名为myvar#.然后,将数据写入变量并显示文件内容。

nccreate (“ex1.nc”“myvar#”);ncwrite (“ex1.nc”“myvar#”, 55) ncdisp (“ex1.nc”
来源:松材线虫病例1。nc格式:netcdf4_classic变量:myvar尺寸:1x1尺寸:数据类型:double

创建第二个文件并定义一个名为myvar2.然后,将数据写入变量并显示文件内容。

nccreate (“ex2.nc”“myvar2”);ncwrite (“ex2.nc”“myvar2”, 99) ncdisp (“ex2.nc”
来源:松材线虫病\ ex2。nc格式:netcdf4_classic变量:myvar2尺寸:1x1尺寸:数据类型:double

方法获取每个文件的模式ncinfo函数。

Info1 = ncinfo(“ex1.nc”
info1 = Filename: '松材线虫病例1。nc'名称:'/'维度:[]变量:[1x1 struct]属性:[]组:[]格式:'netcdf4_classic'
Info2 = ncinfo(“ex2.nc”
info2 =文件名:'松材线虫病\ ex2。nc'名称:'/'维度:[]变量:[1x1 struct]属性:[]组:[]格式:'netcdf4_classic'

创建一个新的NetCDF文件,该文件使用第一个示例文件的模式ncwriteschema函数。然后,显示文件内容。

ncwriteschema (“combined.nc”info1) ncdisp (“combined.nc”
来源:松材线虫病\总和。nc格式:netcdf4_classic变量:myvar尺寸:1x1尺寸:数据类型:double属性:_FillValue = 9.969209968386869e+36

从添加模式ex2.nccombined.nc,使用ncwriteschema

ncwriteschema (“combined.nc”info2)

查看合并文件的内容。

ncdisp (“combined.nc”
来源:松材线虫病\总和。nc格式:netcdf4_classic变量:myvar尺寸:1x1尺寸:数据类型:双属性:_FillValue = 9.969209968386869e+36 myvar2尺寸:1x1尺寸:数据类型:双属性:_FillValue = 9.969209968386869e+36

该文件包含myvar#变量在第一个示例文件中定义myvar2变量在第二个文件中定义。

使用底层函数向NetCDF文件写入数据

这个例子展示了如何使用底层函数将数据写入NetCDF文件。MATLAB®底层函数提供了对NetCDF C库中的例程的访问。MATLAB将函数分组到一个包中,称为netcdf.要调用包中的一个函数,必须在函数名前面加上包名。

为了有效地使用MATLAB的NetCDF函数,你应该熟悉关于NetCDF C接口的信息。

要运行此示例,您必须在当前文件夹中具有写权限。

创建一个1 × 50的数值变量my_data在MATLAB工作空间中。这个向量是一类的

My_data = linspace(0,49,50);

创建NetCDF文件名为my_file.nc,使用netcdf.create函数。的NOCLOBBER参数是一个NetCDF文件访问常量,表示不希望覆盖同名的现有文件。

Ncid = netcf .create(“my_file.nc”“NOCLOBBER”);

netcdf.create返回文件标识符,ncid.创建NetCDF文件时,文件以define模式打开。必须处于定义模式才能定义维度和变量。

方法在文件中定义一个维度netcdf.defDim函数。这个函数对应于nc_def_dim函数在NetCDF库C API中。在定义变量并将数据写入文件之前,必须在文件中定义维度。在本例中,定义一个名为my_dim长度为50。

didim = netcdf.defDim(ncid,“my_dim”, 50)
diid = 0

netcdf.defDim返回与新维度对应的维度标识符。标识符是从零开始的索引。

定义一个名为my_var在维度上,使用netcdf.defVar函数。这个函数对应于nc_def_var函数在NetCDF库C API中。指定变量的NetCDF数据类型,在本例中,NC_BYTE

变量= netcdf.defVar(ncid,“my_var”“NC_BYTE”dimid)
变量= 0

netcdf.defVar返回对应的变量标识符my_var

将NetCDF文件退出定义模式。要向文件写入数据,必须处于数据模式。

netcdf.endDef (ncid)

将MATLAB工作区中的数据写入NetCDF文件中的变量,使用netcdf.putVar函数。工作区中的数据是有等级的但是NetCDF文件中的变量是类型NC_BYTE.MATLAB的NetCDF函数自动进行转换。

netcdf.putVar (ncid varid my_data)

关闭文件,使用netcdf.close函数。

netcdf.close (ncid)

通过打开文件并将数据从变量读入MATLAB工作空间中的新变量,验证数据已写入文件。

Ncid2 = netcdf.open(“my_file.nc”“NC_NOWRITE”);x = netcdf.getVar(ncid2,0);

的数据类型x

x
名称大小字节类属性x 50x1 50 int8

MATLAB以列为主顺序存储数据,而NetCDF C API使用行为主顺序存储数据。x表示存储在NetCDF文件中的数据,因此是50 × 1,即使MATLAB工作区中的原始向量,my_data,是1 × 50。因为您将数据存储在NetCDF文件中为NC_BYTE, MATLAB将变量中的数据作为类读入工作空间int8

关闭文件。

netcdf.close (ncid2)

另请参阅

相关的话题

外部网站

这个话题有帮助吗?