Mercurial > forge
changeset 10483:33a19f48af53 octave-forge
(none)
author | abarth93 |
---|---|
date | Fri, 22 Jun 2012 15:15:16 +0000 |
parents | c81dbbe85a49 |
children | 8228f7a69801 |
files | extra/ncArray/inst/@ncArray/coord.m extra/ncArray/inst/@ncArray/ncArray.m extra/ncArray/inst/@ncArray/subsasgn.m extra/ncArray/inst/@ncArray/subsref.m extra/ncArray/inst/ncCatData.m extra/ncArray/inst/ncData/coord.m extra/ncArray/inst/ncData/ncData.m extra/ncArray/inst/ncData/subsasgn.m extra/ncArray/inst/ncData/subsref.m extra/ncArray/inst/test_ncarray.m |
diffstat | 10 files changed, 75 insertions(+), 75 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/extra/ncArray/inst/@ncArray/coord.m Fri Jun 22 15:15:16 2012 +0000 @@ -0,0 +1,3 @@ +function c = coord(self) +c = self.coord; +%'her' \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/extra/ncArray/inst/@ncArray/ncArray.m Fri Jun 22 15:15:16 2012 +0000 @@ -0,0 +1,30 @@ +% data = ncArray(filename,varname) +% data = ncArray(var,dims,coord) +% data with coordinate values + +function retval = ncArray(varargin) + +if ischar(varargin{1}) + filename = varargin{1}; + varname = varargin{2}; + var = ncBaseArray(filename,varname); + [dims,coord] = nccoord(cached_decompress(filename),varname); + + for i=1:length(coord) + coord(i).val = ncBaseArray(filename,coord(i).name); + end +else + var = varargin{1}; + dims = varargin{2}; + coord = varargin{3}; +end + +self.var = var; +self.dims = dims; +self.nd = length(self.dims); +self.coord = coord; + +retval = class(self,'ncArray',BaseArray(size(self.var))); + + +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/extra/ncArray/inst/@ncArray/subsasgn.m Fri Jun 22 15:15:16 2012 +0000 @@ -0,0 +1,3 @@ +function self = subsasgn(self,idx,x) + +self = subsasgn(self.var,idx,x);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/extra/ncArray/inst/@ncArray/subsref.m Fri Jun 22 15:15:16 2012 +0000 @@ -0,0 +1,32 @@ +function varargout = subsref(self,idx) + +if strcmp(idx(1).type,'()') + + % no subscripts mean that we load all () -> (:,:,...) + if isempty(idx(1).subs) + for i=1:self.nd + idx(1).subs{i} = ':'; + end + end +end + +% catch expressions like: +% data(:,:,:).coord + +if length(idx) == 2 && strcmp(idx(2).type,'.') && strcmp(idx(2).subs,'coord') + for i=1:length(self.coord) + % get indeces of the dimensions of the i-th coordinate which are also + % coordinate of the variable + + % replace dummy by ~ once older version have died + [dummy,j] = intersect(self.dims,self.coord(i).dims); + j = sort(j); + idx_c.type = '()'; + idx_c.subs = idx(1).subs(j); + + varargout{i} = subsref(self.coord(i).val,idx_c); + end +else + % pass subsref to underlying ncBaseArray + varargout{1} = subsref(self.var,idx); +end \ No newline at end of file
--- a/extra/ncArray/inst/ncCatData.m Fri Jun 22 15:13:45 2012 +0000 +++ b/extra/ncArray/inst/ncCatData.m Fri Jun 22 15:15:16 2012 +0000 @@ -79,7 +79,7 @@ end end -data = ncData(var,dims,coord); +data = ncArray(var,dims,coord); end
--- a/extra/ncArray/inst/ncData/coord.m Fri Jun 22 15:13:45 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,3 +0,0 @@ -function c = coord(self) -c = self.coord; -%'her' \ No newline at end of file
--- a/extra/ncArray/inst/ncData/ncData.m Fri Jun 22 15:13:45 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,30 +0,0 @@ -% data = ncData(filename,varname) -% data = ncData(var,dims,coord) -% data with coordinate values - -function retval = ncData(varargin) - -if ischar(varargin{1}) - filename = varargin{1}; - varname = varargin{2}; - var = ncBaseArray(filename,varname); - [dims,coord] = nccoord(cached_decompress(filename),varname); - - for i=1:length(coord) - coord(i).val = ncBaseArray(filename,coord(i).name); - end -else - var = varargin{1}; - dims = varargin{2}; - coord = varargin{3}; -end - -self.var = var; -self.dims = dims; -self.nd = length(self.dims); -self.coord = coord; - -retval = class(self,'ncData',BaseArray(size(self.var))); - - -
--- a/extra/ncArray/inst/ncData/subsasgn.m Fri Jun 22 15:13:45 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,3 +0,0 @@ -function self = subsasgn(self,idx,x) - -self = subsasgn(self.var,idx,x);
--- a/extra/ncArray/inst/ncData/subsref.m Fri Jun 22 15:13:45 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,32 +0,0 @@ -function varargout = subsref(self,idx) - -if strcmp(idx(1).type,'()') - - % no subscripts mean that we load all () -> (:,:,...) - if isempty(idx(1).subs) - for i=1:self.nd - idx(1).subs{i} = ':'; - end - end -end - -% catch expressions like: -% data(:,:,:).coord - -if length(idx) == 2 && strcmp(idx(2).type,'.') && strcmp(idx(2).subs,'coord') - for i=1:length(self.coord) - % get indeces of the dimensions of the i-th coordinate which are also - % coordinate of the variable - - % replace dummy by ~ once older version have died - [dummy,j] = intersect(self.dims,self.coord(i).dims); - j = sort(j); - idx_c.type = '()'; - idx_c.subs = idx(1).subs(j); - - varargout{i} = subsref(self.coord(i).val,idx_c); - end -else - % pass subsref to underlying ncBaseArray - varargout{1} = subsref(self.var,idx); -end \ No newline at end of file
--- a/extra/ncArray/inst/test_ncarray.m Fri Jun 22 15:13:45 2012 +0000 +++ b/extra/ncArray/inst/test_ncarray.m Fri Jun 22 15:15:16 2012 +0000 @@ -1,5 +1,5 @@ function test_ncarray() -% test ncBaseArray, ncCatArray, ncData and ncCatData +% test ncBaseArray, ncCatArray, ncArray and ncCatData varname = 'SST'; @@ -162,7 +162,7 @@ if 1 - % test ncData (constructor: ncData(var,dims,coord) + % test ncArray (constructor: ncData(var,dims,coord) SST = ncBaseArray(filename,varname); SST_ref = ncread(filename,varname); @@ -177,7 +177,7 @@ coord(3).val = ncBaseArray(filename,'time'); coord(3).dims = {'time'}; - data = ncData(SST,{'x','y','time'},coord); + data = ncArray(SST,{'x','y','time'},coord); [x,y,t] = data(:,:,:).coord; @@ -192,8 +192,8 @@ [x,y,t] = data(1:3:end,:,:).coord; assert(isequalwithequalnans(x,lon_ref(1:3:end,:))) - % test ncData (constructor: ncData(filename,varname) - SST = ncData(filename,varname); + % test ncArray (constructor: ncData(filename,varname) + SST = ncArray(filename,varname); [x,y,t] = data(:,:,:).coord; assert(isequalwithequalnans(data(:,:,:),SST_ref)) @@ -218,7 +218,7 @@ zname = [tmpfname '.gz']; system(['gzip --stdout ' tmpfname ' > ' zname]); -SST = ncData(zname,'SST'); +SST = ncArray(zname,'SST'); SST_ref = ncread(tmpfname,'SST'); assert(isequalwithequalnans(SST(),SST_ref))