Global Index (short | long) | Local contents | Local Index (short | long)
[varargout] = getnc(filin, varn, lims, lev, tim);
[varn_out] = getnc(filin, varn, lims, lev, tim);
[varn_out, lat, lon] = getnc(filin, varn, lims, lev, tim);
[varn_out, lat, lon, level] = getnc(filin, varn, lims, lev, tim);
Input variables:
filin = full pathname of NETCDF file to read
varn = variable names (can be cell array)
lims = limits over which to read
lev = number index of the level you want (optional)
tim = time index
Output variables:
varargout = list of variables to output, in the same
order as varn
lat = latitude
lon = longitude
level = actual levels
| This function calls | |
|---|---|
function [varargout] = getnc(filin, varn, lims, lev, tim);
if isstr(varn); tem{1} = varn; varn = tem; end
nvars = length(varn);
% Allow for output of lat, lon, level
if ~iselement(nargout, nvars+[0 2 3])
error('Number of output arguments do not match number of input arguments')
end
nc = netcdf(filin, 'nowrite');
% Get lat, lon, level, and range
lat = nc{'lat',1}(:);
lon = nc{'lon',1}(:);
level = nc{'lev'}(:);
[xk, yk] = keep_var(lims, lon, lat);
% Cycle through input variables
for i = 1:nvars;
varnam = varn{i};
if length(size(var(nc, varnam))) == 3;
varargout{i} = nc{varnam}(tim, yk, xk);
elseif length(size(var(nc, varnam))) == 4;
varargout{i} = nc{varnam, 1}(tim, lev, yk, xk);
end
end
nc = close(nc);
% If lat and lon are output, send those to varargout
if nargout >= nvars+2;
varargout{nvars+1} = lat(yk);
varargout{nvars+2} = lon(xk);
end
if nargout == nvars+3;
varargout{nvars+3} = level(lev);
end