Main Content

netcdf.putVar

将数据写入 netCDF 变量

语法

netcdf.putVar(ncid,varid,data)
netcdf.putVar(ncid,varid,start,data)
netcdf.putVar(ncid,varid,start,count,data)
netcdf.putVar(ncid,varid,start,count,stride,data)

说明

netcdf.putVar(ncid,varid,data)data 写入 varid 指定的 netCDF 变量。

注意

对于 NC_STRING 类型的变量,data 可以包含 UTF-8 编码的字符;对于 NC_CHAR 类型的变量,data 只能包含 ASCII 编码的字符。

ncid 是由 netcdf.createnetcdf.open 返回的 netCDF 文件的标识符,或是由 netcdf.defGrp 返回的 netCDF 组的标识符。

netcdf.putVar(ncid,varid,start,data) 将一个单精度值写入 start 指定的索引处变量。

netcdf.putVar(ncid,varid,start,count,data) 将变量段写入 netCDF 变量,从向量 start 指定的索引开始,直到向量 count 指定的范围,沿着指定变量的每一维度。

netcdf.putVar(ncid,varid,start,count,stride,data) 写入从索引 startcount 指定范围的变量段中各值的采样区间 stride 所指定的子段。

此函数对应于 NetCDF 库 C API 中的几个变量 I/O 函数。要使用此函数,应该熟悉 netCDF 编程范式。

示例

全部折叠

创建一个新的 netCDF 文件,并将变量写入该文件。

为该变量创建一个包含 50 个元素的向量。

my_vardata = linspace(0,50,50);

打开 netCDF 文件。

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

定义变量的维度。

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

在文件中定义一个新变量。

my_varID = netcdf.defVar(ncid,'my_var','NC_DOUBLE',dimid);

退出定义模式,进入数据模式以写入数据。

netcdf.endDef(ncid);

将数据写入变量。

netcdf.putVar(ncid,my_varID,my_vardata);

验证变量已创建。

[varname xtype dimid natts ] = netcdf.inqVar(ncid,0)
varname = 
'my_var'
xtype = 6
dimid = 0
natts = 0

关闭文件。

netcdf.close(ncid)

写入 temperature 示例变量的前 10 个元素。

srcFile = fullfile(matlabroot,'toolbox','matlab','demos','example.nc');
copyfile(srcFile,'myfile.nc');
fileattrib('myfile.nc','+w');
ncid = netcdf.open('myfile.nc','WRITE');
varid = netcdf.inqVarID(ncid,'temperature');
data = [100:109];
netcdf.putVar(ncid,varid,0,10,data);
netcdf.close(ncid);

提示

  • MATLAB® 将多维数据解释为列优先数据,但 netCDF C API 将多维数据解释为行优先数据。netCDF C API 中的多维数据以与 MATLAB 所示顺序相反的顺序显示维度,因此显示为转置。

  • 对于 NC_VLEN 类型的变量,如果 data 包含任何具有多个维度的条目,则 netcdf.putVar 函数在写入值之前按列优先顺序扁平化这些条目。例如,对于 NC_VLEN 类型的变量,将 data 指定为

    {[0.5 0.3] 1.2; [0.4; 0.5] [0 -0.7 5.2; 4.6 2.5 1.8]}

    data 指定为

    {[0.5; 0.3] 1.2; [0.4; 0.5] [0; 4.6; -0.7; 2.5; 5.2; 1.8]}

    具有相同的作用。

版本历史记录

在 R2008b 中推出

全部展开

另请参阅