メインコンテンツ

netcdf.putVar

netCDF 変数にデータを書き込みます。

    説明

    netcdf.putVar(ncid,varid,vardata) は、ncid で指定された netCDF ファイルまたはグループ内の、varid で識別される netCDF 変数に vardata を書き込みます。

    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.inqVar および netcdf.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");

    3 つの新しい次元を定義します。次に、これらの次元に新しい変数を関連付けます。

    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)

    1 次元データを 3 次元変数 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

    変数データ。数値配列、テキスト、または cell 配列として指定します。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 次元の変数について、0 ベースのインデックスを含む、長さ N のベクトルとして start を指定します。

    start を指定しない場合、netcdf.putVar 関数は各次元に沿って、最初のインデックスからデータの書き込みを開始します。

    例: [1 0 2]

    データ型: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

    書き込む要素数。正の整数の数値ベクトルとして指定します。N 次元の変数について、各次元に沿って書き込む要素数を含む、長さが N のベクトルとして count を指定します。

    例: [1 10 50]

    データ型: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

    サンプリング間隔。正の整数の数値ベクトルとして指定します。N 次元の変数について、各次元に沿った変数インデックス間の間隔の数を含む、長さが N のベクトルとして stride を指定します。ベクトル stride の要素は、変数の次元に、同じ順序で対応しています。値が 1 の場合、対応する次元内の netCDF 変数の隣接する値を書き込みます。値が 2 の場合、対応する次元内の値を 1 つおきに書き込みます。以降同様に繰り返されます。

    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 の Web サイトで参照できます。

    バージョン履歴

    R2008b で導入

    すべて展開する