Reading a NetCDF file with Matlab and R

Language

MATLAB

file_name = '/matlab/R2012a/toolbox/matlab/demos/example.nc';
var_name = 'temperature';
group_name = '/grid2/';
tmp = var_name;  % or tmp = group_name
 
% Display global information about a netcdf file
ncdisp(file_name);
% About a variable or a group
ncdisp(file_name, tmp);
% In the specified format 'full' or 'min'
ncdisp(file_name, tmp, 'min');
 
 
% Get information about a netcdf file
info = ncinfo(file_name)
% About a variable
var_info = ncinfo(file_name, var_name)
% About a group
gr_info = ncinfo(file_name, group_name)
 
 
% Read data from a vraiable of a netcdf file
data = ncread(file_name, var_name);
% Or
% data = ncread(file_name, var_name, start, count, stride) 
 
 
% Read attribute
attr =  ncreadatt(file_name, '/', 'creation_date')
var_attr = ncreadatt(file_name, var_name, 'add_offset')
gr_attr = ncreadatt(file_name, group_name, 'description')

R

#Intall the NetCDF libraries: sudo apt-get install libnetcdf-dev 
#Install the ncdf package in R: install.packages("ncdf")
 
library("ncdf")
 
filename = "/home/ndiaye/Projets/R/example.nc"
var_name = "temperature"
attr_name = "units"
 
# Open a netcdf file
fid <- open.ncdf(filename, write=FALSE)
 
# Get a netcdf file info
print(fid)
 
# Get the variable identifier
var_id <- varid.inq.ncdf(fid, var_name)
print(var_id)
 
# Get the name of a variable id 
my_var_name <- varname.inq.ncdf(fid, var_id)
print(my_var_name)
 
# Get a file attribute
attr <- att.get.ncdf(fid, 0,"creation_date")
print(attr)
# Get a variable attribute
attr_value <- att.get.ncdf(fid, var_name, attr_name)
print(attr_value)
 
# Get the size of a variable
size <- varsize.ncdf(fid, var_id)
print (size)
 
# Get dimensions of a variable
ndims <- varndims.ncdf(fid, var_id)
print (ndims)
 
# Read data from a netcdf file
data <- get.var.ncdf(fid, var_name)
print(data)
 
# Get the variable objet
var_object <- var.inq.ncdf(fid,var_id )
print(var_object)
 
# Get the name from the variable object
name <- var_object$name
print (name)
 
# Get variable object units
n_attr <- var_object[["units"]]
print(n_attr)
 
# Close a netcdf file
close.ncdf(fid)