Creating netcdf file error
Show older comments
I am trying to create a .nc file and with the following script as my example:
% Intialise file
nc=netcdf('my_file.nc','clobber');
% Define DIMS
ncdim('LATS',length(Y),nc);
ncdim('LONS',length(X),nc);
ncvar('LATS','double',{'LATS'},nc);
nc{'LATS'}(:) = Y';
Doing this i get the error:
??? Error: File: /home/matlab/toolbox/netcdf/@ncvar/subsasgn.m Line: 118 Column: 9 "subs" previously appeared to be used as a function or command, conflicting with its use here as the name of a variable. A possible cause of this error is that you forgot to initialize the variable, or you have initialized it implicitly using load or eval.
Error in ==> netcdf.subsasgn at 83 result = subsasgn(v, s, other);
Any help?? I cannot seem to assign values to variable that I am trying to create.
Accepted Answer
More Answers (1)
Dave Correa
on 8 Jul 2011
Dear Evan;
I'm using the native NetCDF toolbox Matlab. For your question, Yes, you can use text in a cell to create variable names. I leave you an example.
I hope this is of some help.
regards
Dave Correa
E-mail:correa.dave30@gmail.com
Example:
clc,close all,clear all
% Create file NetCDF.
nx=320; % Length of Longitud
ny=639; % Length of Latitude
nt=12; % Length of Time
disp('Create file Netcdf...')
filenc=['example_nc.nc'];
ncid = netcdf.create(filenc,'NC_WRITE');
% Create dimensions
dimid_lon = netcdf.defDim(ncid,'longitude',nx);
dimid_lat = netcdf.defDim(ncid,'latitude',ny);
dimid_time = netcdf.defDim(ncid,'time',nt);
% Create variables y atributtes of referencia Spacial and time
varid_lon = netcdf.defVar(ncid,'longitude','double',dimid_lon);
netcdf.putAtt(ncid,varid_lon,'long_name','Longitude')
netcdf.putAtt(ncid,varid_lon,'units','degrees_east')
varid_lat = netcdf.defVar(ncid,'latitude','double',dimid_lat);
netcdf.putAtt(ncid,varid_lat,'long_name','Latitude')
netcdf.putAtt(ncid,varid_lat,'units','degrees_north')
varid_time = netcdf.defVar(ncid,'time','double',dimid_time);
netcdf.putAtt(ncid,varid_time,'long_name','Time')
netcdf.putAtt(ncid,varid_time,'units','Days since 1981-09-27 00:00:00')
% Define cell with variable name
variable={'var_01','var_02','var_03','var_04','var_05','var_06','var_07',...
'var_08','var_09','var_10','var_11','var_12','var_13','var_14','var_15'};
for n=1:length(variable)
vari=variable{n}; % Save name temporal of n variable
% Create variable n
varid_var = netcdf.defVar(ncid,vari,'double',[dimid_lon,dimid_lat,dimid_time]);
netcdf.putAtt(ncid,varid_var,'long_name',vari)
netcdf.putAtt(ncid,varid_var,'units','[Unit]')
netcdf.putAtt(ncid,varid_var,'missing_value',-9999)
% Assign values to variables
% In this section we assign values to each of the variables
%
end
netcdf.endDef(ncid) % Finaly definition of variables
netcdf.close(ncid) % Close file NetCDF.
% Verificate NetCDF file create
ncid = netcdf.open('example_nc.nc','NOWRITE');
[ndims,nvars,ngatts,unlimdimid] = netcdf.inq(ncid);
nvars
Categories
Find more on NetCDF Files in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!