主要内容

netcdf.putVar

将数据写入 netCDF 变量

    说明

    netcdf.putVar(ncid,varid,vardata)vardata 写入由 ncid 指定的 netCDF 文件或组中由 varid 标识的 netCDF 变量。

    示例

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

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

    示例

    netcdf.putVar(ncid,varid,start,count,stride,vardata) 写入由采样间隔 stride 指定的值的子段。

    示例

    全部折叠

    创建并打开一个 netCDF 文件。

    ncid = netcdf.create("myfile.nc","NOCLOBBER");

    定义一个新维度。然后将新变量与此维度相关联。

    dimid = netcdf.defDim(ncid,"my_dim",5);
    varid = netcdf.defVar(ncid,"my_var","NC_DOUBLE",dimid);
    netcdf.endDef(ncid)

    向变量中写入数据。

    vardata = linspace(0,5,5);
    netcdf.putVar(ncid,varid,vardata)

    使用 netcdf.inqVarnetcdf.getVar 函数检查数据是否按预期写入。

    [varname,xtype,dimid,natts] = netcdf.inqVar(ncid,varid)
    varname = 
    'my_var'
    
    xtype = 
    6
    
    dimid = 
    0
    
    natts = 
    0
    
    netcdf.getVar(ncid,varid)
    ans = 5×1
    
             0
        1.2500
        2.5000
        3.7500
        5.0000
    
    

    关闭 netCDF 文件。

    netcdf.close(ncid)

    创建示例 netCDF 文件的副本,并打开该副本进行写入。将数据写入 temperature 变量的前 10 个条目。

    copyfile("example.nc","myfile.nc")
    ncid = netcdf.open("myfile.nc","NC_WRITE");
    varid = netcdf.inqVarID(ncid,"temperature");
    
    start = 0;
    count = 10;
    vardata = 100:2:118;
    netcdf.putVar(ncid,varid,start,count,vardata);

    使用 netcdf.getVar 函数检查值是否按预期写入。

    read_data = netcdf.getVar(ncid,varid);
    read_data(1:10)
    ans = 10×1 int16 column vector
    
       100
       102
       104
       106
       108
       110
       112
       114
       116
       118
    
    

    关闭 netCDF 文件。

    netcdf.close(ncid)

    创建并打开一个 netCDF-4 文件。

    ncid = netcdf.create("myfile.nc","NETCDF4");

    定义三个新维度。然后将一个新变量与这些维度相关联。

    dim1id = netcdf.defDim(ncid,"my_dim1",4);
    dim2id = netcdf.defDim(ncid,"my_dim2",3);
    dim3id = netcdf.defDim(ncid,"my_dim3",2);
    varid = netcdf.defVar(ncid,"my_var","NC_DOUBLE",[dim1id dim2id dim3id]);
    netcdf.endDef(ncid)

    将一维数据写入三维变量 my_var

    vardata = 1:24;
    netcdf.putVar(ncid,varid,vardata)

    使用 netcdf.getVar 函数检查数据是否以列优先顺序作为 4×3×2 数组写入。

    netcdf.getVar(ncid,varid)
    ans = 
    ans(:,:,1) =
    
         1     5     9
         2     6    10
         3     7    11
         4     8    12
    
    
    ans(:,:,2) =
    
        13    17    21
        14    18    22
        15    19    23
        16    20    24
    
    

    关闭 netCDF 文件。

    netcdf.close(ncid)

    输入参数

    全部折叠

    netCDF 源的标识符,指定为非负整数标量。netCDF 源可以是 netCDF 文件或 netCDF 组。

    数据类型: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

    netCDF 变量的标识符,指定为非负整数标量。

    数据类型: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

    变量数据,指定为数值数组、文本或元胞数组。vardata 的值必须与由 varid 标识的 netCDF 变量的数据类型兼容。

    如果为 count 指定值,则 vardata 中的条目数必须等于 count 中条目的乘积。否则,vardata 中的条目数必须等于由 varid 标识的变量的维度大小的乘积。

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

    注意

    • 如果 vardata 有多个维度,则 netcdf.putVar 函数会在写入数据之前按列优先顺序展平 vardata。如果由 varid 标识的变量有多个维度,则将 vardata 按列优先顺序写入此变量。

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

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

      vardata 指定为

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

      具有相同的作用。

    数据类型: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | char | string | cell

    变量中开始写入数据的索引,指定为由正整数组成的数值向量。对于 N 维变量,将 start 指定为长度为 N 的向量,其中包含从 0 开始的索引。

    如果不指定 start,则 netcdf.putVar 函数将从初始索引开始沿每个维度写入数据。

    示例: [1 0 2]

    数据类型: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

    要写入的元素数,指定为由正整数组成的数值向量。对于 N 维变量,将 count 指定为长度为 N 的向量,包含要沿每个维度写入的元素数。

    示例: [1 10 50]

    数据类型: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

    采样间隔,指定为由正整数组成的数值向量。对于 N 维变量,将 stride 指定为长度为 N 的向量,该向量包含沿每个维度的变量索引之间的空格数。stride 向量的元素按顺序对应于变量的维度。值为 1 表示在对应维度中连续写入 netCDF 变量的相邻值,值为 2 表示在对应维度中每隔一个值写入一个值,依此类推。

    如果未指定 stride,则 netcdf.putVar 函数将沿每个维度以默认间距 1 写入数据。

    示例: [2 10 1]

    数据类型: double

    提示

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

    • 此函数对应于 netCDF 库 C API 中的几个 (nc_put_var*) 函数。

      要使用此函数,必须熟悉 netCDF C 接口。您可以在 netCDF 网站上访问 netCDF 文档。

    版本历史记录

    在 R2008b 中推出

    全部展开

    另请参阅