8
8
9
9
classdef DataArray < nix .NamedEntity & nix .MetadataMixIn & nix .SourcesMixIn
10
10
% DataArray nix DataArray object
11
-
11
+
12
12
properties (Hidden )
13
13
% namespace reference for nix-mx functions
14
14
alias = ' DataArray'
15
- end ;
15
+ end
16
16
17
17
properties (Dependent )
18
18
dimensions % should not be dynamic due to complex set operation
19
- end ;
20
-
19
+ end
20
+
21
21
methods
22
22
function obj = DataArray(h )
23
23
24
24
25
25
26
-
26
+
27
27
% assign dynamic properties
28
28
nix .Dynamic .add_dyn_attr(obj , ' label' , ' rw' );
29
29
nix .Dynamic .add_dyn_attr(obj , ' unit' , ' rw' );
30
30
nix .Dynamic .add_dyn_attr(obj , ' expansionOrigin' , ' rw' );
31
31
nix .Dynamic .add_dyn_attr(obj , ' polynomCoefficients' , ' rw' );
32
32
nix .Dynamic .add_dyn_attr(obj , ' dataExtent' , ' rw' );
33
- end ;
33
+ end
34
34
35
35
% -----------------
36
36
% Dimensions
37
37
% -----------------
38
-
38
+
39
39
function dimensions = get .dimensions(obj )
40
40
dimensions = {};
41
- currList = nix_mx(' DataArray::dimensions' , obj .nix_handle );
41
+ fname = strcat(obj .alias , ' ::dimensions' );
42
+ currList = nix_mx(fname , obj .nix_handle );
42
43
for i = 1 : length(currList )
43
44
switch currList(i ).dtype
44
45
case ' set'
49
50
dimensions{i } = nix .RangeDimension(currList(i ).dimension);
50
51
otherwise
51
52
disp(' some dimension type is unknown! skip' )
52
- end ;
53
- end ;
54
- end ;
55
-
56
- function dim = append_set_dimension(obj )
57
- func_name = strcat(obj .alias , ' ::appendSetDimension' );
58
- dim = nix .SetDimension(nix_mx(func_name , obj .nix_handle ));
53
+ end
54
+ end
55
+ end
56
+
57
+ function r = append_set_dimension(obj )
58
+ fname = strcat(obj .alias , ' ::appendSetDimension' );
59
+ h = nix_mx(fname , obj .nix_handle );
60
+ r = nix .SetDimension(h );
59
61
end
60
-
61
- function dim = append_sampled_dimension(obj , interval )
62
- func_name = strcat(obj .alias , ' ::appendSampledDimension' );
63
- dim = nix .SampledDimension(nix_mx(func_name , obj .nix_handle , interval ));
62
+
63
+ function r = append_sampled_dimension(obj , interval )
64
+ fname = strcat(obj .alias , ' ::appendSampledDimension' );
65
+ h = nix_mx(fname , obj .nix_handle , interval );
66
+ r = nix .SampledDimension(h );
64
67
end
65
68
66
- function dim = append_range_dimension(obj , ticks )
67
- func_name = strcat(obj .alias , ' ::appendRangeDimension' );
68
- dim = nix .RangeDimension(nix_mx(func_name , obj .nix_handle , ticks ));
69
+ function r = append_range_dimension(obj , ticks )
70
+ fname = strcat(obj .alias , ' ::appendRangeDimension' );
71
+ h = nix_mx(fname , obj .nix_handle , ticks );
72
+ r = nix .RangeDimension(h );
69
73
end
70
74
71
- function dim = append_alias_range_dimension(obj )
72
- func_name = strcat(obj .alias , ' ::appendAliasRangeDimension' );
73
- dim = nix .RangeDimension(nix_mx(func_name , obj .nix_handle ));
75
+ function r = append_alias_range_dimension(obj )
76
+ fname = strcat(obj .alias , ' ::appendAliasRangeDimension' );
77
+ h = nix_mx(fname , obj .nix_handle );
78
+ r = nix .RangeDimension(h );
74
79
end
75
-
76
- function dim = open_dimension_idx(obj , idx )
80
+
81
+ function r = open_dimension_idx(obj , idx )
77
82
% Getting the dimension by index starts with 1
78
83
% instead of 0 compared to all other index functions.
79
- func_name = strcat(obj .alias , ' ::openDimensionIdx' );
80
- ret = nix_mx(func_name , obj .nix_handle , idx );
81
- switch (ret .dimension_type )
84
+ fname = strcat(obj .alias , ' ::openDimensionIdx' );
85
+ dim = nix_mx(fname , obj .nix_handle , idx );
86
+ switch (dim .dimension_type )
82
87
case ' set'
83
- dim = nix .SetDimension(ret .handle );
88
+ r = nix .SetDimension(dim .handle );
84
89
case ' sampled'
85
- dim = nix .SampledDimension(ret .handle );
90
+ r = nix .SampledDimension(dim .handle );
86
91
case ' range'
87
- dim = nix .RangeDimension(ret .handle );
88
- end ;
92
+ r = nix .RangeDimension(dim .handle );
93
+ end
89
94
end
90
95
91
- function delCheck = delete_dimensions(obj )
92
- func_name = strcat(obj .alias , ' ::deleteDimensions' );
93
- delCheck = nix_mx(func_name , obj .nix_handle );
96
+ function r = delete_dimensions(obj )
97
+ fname = strcat(obj .alias , ' ::deleteDimensions' );
98
+ r = nix_mx(fname , obj .nix_handle );
94
99
end
95
100
96
- function c = dimension_count(obj )
97
- c = nix_mx(' DataArray::dimensionCount' , obj .nix_handle );
101
+ function r = dimension_count(obj )
102
+ fname = strcat(obj .alias , ' ::dimensionCount' );
103
+ r = nix_mx(fname , obj .nix_handle );
98
104
end
99
105
100
106
% -----------------
101
107
% Data access methods
102
108
% -----------------
103
109
104
- function data = read_all(obj )
105
- tmp = nix_mx(' DataArray::readAll' , obj .nix_handle );
106
- % data must agree with file & dimensions
107
- % see mkarray.cc(42)
108
- data = permute(tmp , length(size(tmp )): -1 : 1 );
109
- end ;
110
-
110
+ function r = read_all(obj )
111
+ fname = strcat(obj .alias , ' ::readAll' );
112
+ data = nix_mx(fname , obj .nix_handle );
113
+ r = nix .Utils .transpose_array(data );
114
+ end
115
+
111
116
% -- TODO add (optional) offset
112
117
% -- If a DataArray has been created as boolean or numeric,
113
118
% -- provide that only values of the proper DataType can be written.
114
- function write_all(obj , data )
119
+ function [] = write_all(obj , data )
115
120
if (isinteger(obj .read_all ) && isfloat(data ))
116
121
disp(' Warning: Writing Float data to an Integer DataArray' );
117
- end ;
118
-
122
+ end
123
+
119
124
errorStruct.identifier = ' DataArray:improperDataType' ;
120
125
if (islogical(obj .read_all ) && ~islogical(data ))
121
126
errorStruct.message = strcat(' Trying to write' , ...
@@ -134,18 +139,17 @@ function write_all(obj, data)
134
139
errorStruct.message = (' Writing char/string DataArrays is not supported as of yet.' );
135
140
error(errorStruct );
136
141
else
137
- % data must agree with file & dimensions
138
- % see mkarray.cc(42)
139
- tmp = permute(data , length(size(data )): -1 : 1 );
140
- nix_mx(' DataArray::writeAll' , obj .nix_handle , tmp );
141
- end ;
142
- end ;
143
-
144
- function s = datatype(obj )
145
- s = nix_mx(' DataArray::dataType' , obj .nix_handle );
142
+ fname = strcat(obj .alias , ' ::writeAll' );
143
+ nix_mx(fname , obj .nix_handle , nix .Utils .transpose_array(data ));
144
+ end
146
145
end
147
-
148
- % set data extent enabels to increase the original size
146
+
147
+ function r = datatype(obj )
148
+ fname = strcat(obj .alias , ' ::dataType' );
149
+ r = nix_mx(fname , obj .nix_handle );
150
+ end
151
+
152
+ % Set data extent enables to increase the original size
149
153
% of a data array within the same dimensions.
150
154
% e.g. increase the size of a 2D array [5 10] to another
151
155
% 2D array [5 11]. Changing the dimensions is not possible
@@ -155,9 +159,11 @@ function write_all(obj, data)
155
159
% shape, existing data that does not fit into the new shape
156
160
% will be lost!
157
161
function [] = set_data_extent(obj , extent )
158
- nix_mx(' DataArray::setDataExtent' , obj .nix_handle , extent );
162
+ fname = strcat(obj .alias , ' ::setDataExtent' );
163
+ nix_mx(fname , obj .nix_handle , extent );
159
164
% update changed dataExtent in obj.info
160
165
obj.info = nix_mx(strcat(obj .alias , ' ::describe' ), obj .nix_handle );
161
166
end
162
- end ;
167
+ end
168
+
163
169
end
0 commit comments