Main Content

netcdf.putAtt

netCDF 属性にデータを書き込む

構文

netcdf.putAtt(ncid,varid,attrname,attrvalue)
netcdf.putAtt(ncid,varid,attrname,attrvalue,xtype)

説明

netcdf.putAtt(ncid,varid,attrname,attrvalue) は値 attrvalue をもつ attrname という名前の属性を、varid によって指定される netCDF 変数に書き込みます。グローバル属性を指定するには、varid に対して netcdf.getConstant('NC_GLOBAL') を使用します。

ncid は、関数 netcdf.create または関数 netcdf.open によって返される netCDF ファイル識別子です。

netcdf.putAtt(ncid,varid,attrname,attrvalue,xtype) は、attrvaluextype に指定されたデータ型として書き込みます。次のものとして xtype の値を指定します。

  • 次の値のいずれかが含まれた文字ベクトルまたは string スカラー

    xtype の値MATLAB® クラス
    NC_DOUBLEdouble
    NC_FLOATsingle
    NC_INT64 (netCDF-4 ファイルのみ)int64
    NC_UINT64 (netCDF-4 ファイルのみ)uint64
    NC_INTint32
    NC_UINT (netCDF-4 ファイルのみ)uint32
    NC_SHORTint16
    NC_USHORT (netCDF-4 ファイルのみ)uint16
    NC_BYTEint8
    NC_UBYTE (netCDF-4 ファイルのみ)uint8
    NC_CHARchar
    NC_STRING (netCDF-4 ファイルのみ)string
  • 関数 netcdf.getConstant により返された等価の数値

  • 関数 netcdf.defVlen により返された数値型識別子 (cell 配列に対応するユーザー定義の NC_VLEN 型の属性の場合)

メモ

netcdf.putAtt を使用して netCDF4 ファイルの '_FillValue' 属性を設定することはできません。変数の埋め込み値を設定するには、関数 netcdf.defVarFill を使用します。

関数 netcdf.putAtt は、netCDF ライブラリ C API のさまざまな属性の I/O 関数に相当します。この関数を使用するには、NetCDF プログラミング パラダイムに関する知識が必要です。

すべて折りたたむ

この例では、新しい netCDF ファイルを作成し、次元と変数を定義し、データをその変数に追加して、変数と関連付けられる属性を作成します。この例を実行するには、現在のディレクトリへの書き込み権限が必要です。

% Create a variable in the workspace.
my_vardata = linspace(0,50,50);

% Create a netCDF file.
ncid = netcdf.create('foo.nc','NC_WRITE');

% Define a dimension in the file.
dimid = netcdf.defDim(ncid,'my_dim',50);
 
% Define a new variable in the file.
varid = netcdf.defVar(ncid,'my_var','double',dimid);

% Leave define mode and enter data mode to write data.
netcdf.endDef(ncid);

% Write data to variable.
netcdf.putVar(ncid,varid,my_vardata);

% Re-enter define mode.
netcdf.reDef(ncid);

% Create an attribute associated with the variable.
netcdf.putAtt(ncid,0,'my_att',10);

% Verify that the attribute was created.
[xtype xlen] = netcdf.inqAtt(ncid,0,'my_att')

xtype =

     6


xlen =

     1

この例では、新しい netCDF ファイルを作成し、グローバル属性を指定し、属性に値を割り当てます。

ncid = netcdf.create('myfile.nc','CLOBBER');
varid = netcdf.getConstant('GLOBAL');
netcdf.putAtt(ncid,varid,'creation_date',datestr(now));
netcdf.close(ncid);

string 配列を NC_STRING 型として netCDF-4 ファイルのグローバル属性に書き込みます。次に、グローバル属性の値を返します。

netCDF-4 ファイルを作成し、string 配列 ["°​F","°​C"] をグローバル属性 Units の値として書き込みます。

ncid = netcdf.create("myfile.nc","NETCDF4");
netcdf.putAtt(ncid, netcdf.getConstant("NC_GLOBAL"),"Units",["°​F","°​C"])
netcdf.close(ncid)

グローバル属性の値を返してから、netCDF-4 ファイルを閉じます。

ncid = netcdf.open("myfile.nc");
netcdf.getAtt(ncid, netcdf.getConstant("NC_GLOBAL"),"Units")
netcdf.close(ncid)

データを netCDF-4 ファイルのグローバル属性に string データとして書き込みます。

netCDF-4 ファイルを作成します。次に、文字ベクトル 'March''NC_STRING' 型としてグローバル属性 Month に書き込みます。

ncid = netcdf.create("myfile.nc","NETCDF4");
netcdf.putAtt(ncid, netcdf.getConstant("NC_GLOBAL"), ...
      "Month",'March','NC_STRING')
netcdf.close(ncid)

グローバル属性 Month の値を返してから、netCDF-4 ファイルを閉じます。

ncid = netcdf.open("myfile.nc");
netcdf.getAtt(ncid, netcdf.getConstant("NC_GLOBAL"),"Month")
netcdf.close(ncid)

ヒント

  • attrvalue に複数の次元がある場合、関数 netcdf.putAttattrvalue を列優先の順序でフラットにしてから属性値を書き込みます。たとえば、attrvalue[1 2 3; 4 5 6] として指定した場合と、attrvalue[1 4 2 5 3 6] として指定した場合とでは、どちらでも同じ効果が得られます。

    また、NC_VLEN 型の変数では、attrvalue に複数の次元をもつエントリが含まれている場合、関数 netcdf.putAtt は列優先の順序でそうしたエントリをフラットにしてから値を書き込みます。たとえば、NC_VLEN 型の変数では、attrvalue を以下のように指定した場合と、

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

    attrvalue を以下のように指定した場合とでは、

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

    同じ効果が得られます。

バージョン履歴

すべて展開する