Mercurial > forge
changeset 10443:372cacc3870d octave-forge
(none)
author | abarth93 |
---|---|
date | Wed, 13 Jun 2012 11:40:23 +0000 |
parents | a3b1f790c7d8 |
children | fd0d85e4083c |
files | main/octcdf/inst/ncread.m main/octcdf/inst/ncwrite.m |
diffstat | 2 files changed, 71 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/main/octcdf/inst/ncread.m Wed Jun 13 08:28:08 2012 +0000 +++ b/main/octcdf/inst/ncread.m Wed Jun 13 11:40:23 2012 +0000 @@ -69,3 +69,4 @@ x = permute(x,[ndims(x):-1:1]); +close(nc)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main/octcdf/inst/ncwrite.m Wed Jun 13 11:40:23 2012 +0000 @@ -0,0 +1,70 @@ +% ncwrite(filename,varname,x) +% ncwrite(filename,varname,x,start,stride) +% write the variable varname to file filename. + +function ncwrite(filename,varname,x,start,stride) + +nc = netcdf(filename,'w'); +nv = nc{varname}; + +% number of dimenions +nd = length(dim(nv)); + +% sz size (padded with ones) +sz = ones(1,nd); +tmp = size(x); +sz(1:length(tmp)) = tmp; + +if nargin == 3 + start = ones(1,nd); +end + +if nargin < 5 + stride = ones(1,nd); +end + +% end index + +endi = start + (sz-1).*stride; + + +% save data + +% subsref structure +subsr.type = '()'; +subsr.subs = cell(1,nd); +for i=1:nd + subsr.subs{nd-i+1} = start(i):stride(i):endi(i); +end +%start,endi + + +% apply attributes + +factor = nv.scale_factor(:); +offset = nv.add_offset(:); +fv = nv.FillValue_(:); + +if ~isempty(offset) + x = x - offset; +end + +if ~isempty(factor) + x = x / factor; +end + +if ~isempty(fv) + x(isnan(x)) = fv; +else + fv = nv.missing_value; + + if ~isempty(fv) + x(isnan(x)) = fv; + end +end + +x = permute(x,[ndims(x):-1:1]); + +nv = subsasgn(nv,subsr,x); +close(nc) +