annotate extra/ncArray/inst/@ncArray/ncArray.m @ 12680:1a9c41feaf2b octave-forge

add derived Array class
author abarth93
date Mon, 24 Aug 2015 08:49:21 +0000
parents 45037f86658f
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
10542
abarth93
parents: 10535
diff changeset
1 % Create an array representing a NetCDF variable.
abarth93
parents: 10535
diff changeset
2 %
abarth93
parents: 10535
diff changeset
3 % V = ncArray(filename,varname)
abarth93
parents: 10535
diff changeset
4 % V = ncArray(filename,varname,'property',value,...)
abarth93
parents: 10535
diff changeset
5 % create a ncArray that can be accessed as a normal array.
10486
abarth93
parents: 10483
diff changeset
6 %
abarth93
parents: 10483
diff changeset
7 % For read access filename can be compressed if it has the extensions
abarth93
parents: 10483
diff changeset
8 % ".gz" or ".bz2". It use the function cache_decompress to cache to
abarth93
parents: 10483
diff changeset
9 % decompressed files.
abarth93
parents: 10483
diff changeset
10 %
abarth93
parents: 10483
diff changeset
11 % Data is loaded by ncread and saved by ncwrite. Values equal to _FillValue
abarth93
parents: 10483
diff changeset
12 % are thus replaced by NaN and the scaling (add_offset and
abarth93
parents: 10483
diff changeset
13 % scale_factor) is applied during loading and saving.
abarth93
parents: 10483
diff changeset
14 %
abarth93
parents: 10483
diff changeset
15 %
abarth93
parents: 10483
diff changeset
16 % Example:
abarth93
parents: 10483
diff changeset
17 %
abarth93
parents: 10483
diff changeset
18 % Loading the variable (assuming V is 3 dimensional):
abarth93
parents: 10483
diff changeset
19 %
abarth93
parents: 10483
diff changeset
20 % x = V(1,1,1); % load element 1,1,1
abarth93
parents: 10483
diff changeset
21 % x = V(:,:,:); % load the complete array
abarth93
parents: 10483
diff changeset
22 % x = V(); x = full(V) % loads also the complete array
abarth93
parents: 10483
diff changeset
23 %
abarth93
parents: 10483
diff changeset
24 % Saving data in the netcdf file:
abarth93
parents: 10483
diff changeset
25 % V(1,1,1) = x; % save x in element 1,1,1
abarth93
parents: 10483
diff changeset
26 % V(:,:,:) = x;
abarth93
parents: 10483
diff changeset
27 %
abarth93
parents: 10483
diff changeset
28 % Attributes
abarth93
parents: 10483
diff changeset
29 % units = V.units; % get attribute called "units"
abarth93
parents: 10483
diff changeset
30 % V.units = 'degree C'; % set attributes;
abarth93
parents: 10483
diff changeset
31 %
abarth93
parents: 10483
diff changeset
32 % Note: use the '.()' notation if the attribute has a leading underscore
abarth93
parents: 10483
diff changeset
33 % (due to a limitation in the matlab parser):
abarth93
parents: 10483
diff changeset
34 %
abarth93
parents: 10483
diff changeset
35 % V.('_someStrangeAttribute') = 123;
abarth93
parents: 10483
diff changeset
36 %
10542
abarth93
parents: 10535
diff changeset
37 % see also cache_decompress, ncCatArray
abarth93
parents: 10535
diff changeset
38 % Web: http://modb.oce.ulg.ac.be/mediawiki/index.php/ncArray
10486
abarth93
parents: 10483
diff changeset
39
abarth93
parents: 10483
diff changeset
40 % hidded constructor signature:
12680
1a9c41feaf2b add derived Array class
abarth93
parents: 10542
diff changeset
41 % data = ncArray(var,dims,coord);
10486
abarth93
parents: 10483
diff changeset
42 % is used to create data with coordinate values by ncCatArray
10482
abarth93
parents:
diff changeset
43
10483
abarth93
parents: 10482
diff changeset
44 function retval = ncArray(varargin)
10482
abarth93
parents:
diff changeset
45
abarth93
parents:
diff changeset
46 if ischar(varargin{1})
abarth93
parents:
diff changeset
47 filename = varargin{1};
abarth93
parents:
diff changeset
48 varname = varargin{2};
abarth93
parents:
diff changeset
49 var = ncBaseArray(filename,varname);
abarth93
parents:
diff changeset
50 [dims,coord] = nccoord(cached_decompress(filename),varname);
abarth93
parents:
diff changeset
51
abarth93
parents:
diff changeset
52 for i=1:length(coord)
abarth93
parents:
diff changeset
53 coord(i).val = ncBaseArray(filename,coord(i).name);
abarth93
parents:
diff changeset
54 end
abarth93
parents:
diff changeset
55 else
abarth93
parents:
diff changeset
56 var = varargin{1};
abarth93
parents:
diff changeset
57 dims = varargin{2};
abarth93
parents:
diff changeset
58 coord = varargin{3};
abarth93
parents:
diff changeset
59 end
abarth93
parents:
diff changeset
60
abarth93
parents:
diff changeset
61 self.var = var;
abarth93
parents:
diff changeset
62 self.dims = dims;
abarth93
parents:
diff changeset
63 self.nd = length(self.dims);
abarth93
parents:
diff changeset
64 self.coord = coord;
abarth93
parents:
diff changeset
65
10483
abarth93
parents: 10482
diff changeset
66 retval = class(self,'ncArray',BaseArray(size(self.var)));
10482
abarth93
parents:
diff changeset
67
abarth93
parents:
diff changeset
68
abarth93
parents:
diff changeset
69
10535
0f1fc56d9324 add license
abarth93
parents: 10486
diff changeset
70
0f1fc56d9324 add license
abarth93
parents: 10486
diff changeset
71
0f1fc56d9324 add license
abarth93
parents: 10486
diff changeset
72
0f1fc56d9324 add license
abarth93
parents: 10486
diff changeset
73 % Copyright (C) 2012 Alexander Barth <barth.alexander@gmail.com>
0f1fc56d9324 add license
abarth93
parents: 10486
diff changeset
74 %
0f1fc56d9324 add license
abarth93
parents: 10486
diff changeset
75 % This program is free software; you can redistribute it and/or modify
0f1fc56d9324 add license
abarth93
parents: 10486
diff changeset
76 % it under the terms of the GNU General Public License as published by
0f1fc56d9324 add license
abarth93
parents: 10486
diff changeset
77 % the Free Software Foundation; either version 2 of the License, or
0f1fc56d9324 add license
abarth93
parents: 10486
diff changeset
78 % (at your option) any later version.
0f1fc56d9324 add license
abarth93
parents: 10486
diff changeset
79 %
0f1fc56d9324 add license
abarth93
parents: 10486
diff changeset
80 % This program is distributed in the hope that it will be useful,
0f1fc56d9324 add license
abarth93
parents: 10486
diff changeset
81 % but WITHOUT ANY WARRANTY; without even the implied warranty of
0f1fc56d9324 add license
abarth93
parents: 10486
diff changeset
82 % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
0f1fc56d9324 add license
abarth93
parents: 10486
diff changeset
83 % GNU General Public License for more details.
0f1fc56d9324 add license
abarth93
parents: 10486
diff changeset
84 %
0f1fc56d9324 add license
abarth93
parents: 10486
diff changeset
85 % You should have received a copy of the GNU General Public License
0f1fc56d9324 add license
abarth93
parents: 10486
diff changeset
86 % along with this program; If not, see <http://www.gnu.org/licenses/>.
0f1fc56d9324 add license
abarth93
parents: 10486
diff changeset
87