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)
+