How to create a a scalar NetCDF variable (i.e with no dimensions)?

6 次查看(过去 30 天)
I need to define a NetCDF variable with a dimension of size zero. The NetCDF function, netcdf.defVar requires a dimid, but it is not possible to define a dimension of length zero, since assigning zero in netcdf.defDim produces an unlimited dimension. Does matlab have any native functions to support zero length variables?

采纳的回答

Ashish Uthama
Ashish Uthama 2011-12-9
Could you tell us why would you need a dimension of size zero?
Are you trying to create a scalar variable? If so, try [] for the dimid in the call to netcdf.defVar. (You could also try the newer nccreate if you have it.)

更多回答(1 个)

Jonathan Blythe
Jonathan Blythe 2011-12-12
Thank you, this did the trick.
We use 'empty' NetCDF variables to tack ancillary metadata. In this case, the Climate and Forecast conventions specify a variable called Grid Mapping that is one instance of this.
  1 个评论
Mary Jo Brodzik
Mary Jo Brodzik 2023-6-16
I needed to do this same task and it took me a long time to come across this answer. One additional note for others who may also be puzzled: for the CF grid_mapping variable, you only need to define the variable and then add the projection attributes, no need to use 'putVar' to populate it with anything degenerate, e.g.:
varid = netcdf.defVar(ncid, 'crs', 'NC_INT', []);
netcdf.endDef(ncid);
netcdf.putAtt(ncid, varid, 'grid_mapping_name', 'sinusoidal');
% ...then use putAtt for the rest of the 'crs' attributes

请先登录,再进行评论。

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by