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) は、varid によって識別される netCDF 変数に data を書き込みます。

メモ

NC_STRING 型の変数の場合、data に UTF-8 エンコード文字を含めることができます。NC_CHAR 型の変数の場合、data は ASCII エンコード文字のみを含む必要があります。

ncid は、netcdf.create または netcdf.open によって返されるような netCDF ファイルの識別子、または netcdf.defGrp によって返されるような netCDF グループの識別子です。

netcdf.putVar(ncid,varid,start,data) は、単一のデータ値を start によって指定されるインデックスの変数に書き込みます。

netcdf.putVar(ncid,varid,start,count,data) は、ベクトル start で指定されるインデックスとベクトル count で指定される範囲の netCDF 変数に、指定された変数の各次元と一緒に値のセクションを書き込みます。

netcdf.putVar(ncid,varid,start,count,stride,data) は、インデックス start で始まる変数のセクションに値のサンプル間隔 stride で指定されるサブセクションを、count で指定される範囲に書き込みます。

この関数は、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 で導入

すべて展開する