Creating netcdf file error
Afficher commentaires plus anciens
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.
Réponse acceptée
Plus de réponses (1)
Dave Correa
le 8 Juil 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
Catégories
En savoir plus sur NetCDF Files dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!