Skip to content

Commit 2e886ba

Browse files
committed
[matlab] Add nix.Utils.transpose_array function
The new nix.Utils.transpose_array function rearranges the c++ nix data array dimensions to fit Matlab requirements. The functions is required in nix.DataArray, nix.Tag and nix.MultiTag.
1 parent b1eaec6 commit 2e886ba

File tree

4 files changed

+19
-30
lines changed

4 files changed

+19
-30
lines changed

+nix/DataArray.m

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -110,9 +110,7 @@
110110
function r = read_all(obj)
111111
fname = strcat(obj.alias, '::readAll');
112112
data = nix_mx(fname, obj.nix_handle);
113-
114-
% data must agree with file & dimensions; see mkarray.cc(42)
115-
r = permute(data, length(size(data)):-1:1);
113+
r = nix.Utils.transpose_array(data);
116114
end
117115

118116
%-- TODO add (optional) offset
@@ -142,9 +140,7 @@
142140
error(errorStruct);
143141
else
144142
fname = strcat(obj.alias, '::writeAll');
145-
% data must agree with file & dimensions; see mkarray.cc(42)
146-
tmp = permute(data, length(size(data)):-1:1);
147-
nix_mx(fname, obj.nix_handle, tmp);
143+
nix_mx(fname, obj.nix_handle, nix.Utils.transpose_array(data));
148144
end
149145
end
150146

+nix/MultiTag.m

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -65,17 +65,13 @@
6565
function r = retrieve_data(obj, pos_idx, id_or_name)
6666
fname = strcat(obj.alias, '::retrieveData');
6767
data = nix_mx(fname, obj.nix_handle, pos_idx, id_or_name);
68-
69-
% data must agree with file & dimensions see mkarray.cc(42)
70-
r = permute(data, length(size(data)):-1:1);
68+
r = nix.Utils.transpose_array(data);
7169
end
7270

7371
function r = retrieve_data_idx(obj, pos_idx, ref_idx)
7472
fname = strcat(obj.alias, '::retrieveDataIdx');
7573
data = nix_mx(fname, obj.nix_handle, pos_idx, ref_idx);
76-
77-
% data must agree with file & dimensions see mkarray.cc(42)
78-
r = permute(data, length(size(data)):-1:1);
74+
r = nix.Utils.transpose_array(data);
7975
end
8076

8177
function r = reference_count(obj)
@@ -125,17 +121,13 @@
125121
function r = retrieve_feature_data(obj, pos_idx, id_or_name)
126122
fname = strcat(obj.alias, '::featureRetrieveData');
127123
data = nix_mx(fname, obj.nix_handle, pos_idx, id_or_name);
128-
129-
% data must agree with file & dimensions; see mkarray.cc(42)
130-
r = permute(data, length(size(data)):-1:1);
124+
r = nix.Utils.transpose_array(data);
131125
end
132126

133127
function r = retrieve_feature_data_idx(obj, pos_idx, feat_idx)
134128
fname = strcat(obj.alias, '::featureRetrieveDataIdx');
135129
data = nix_mx(fname, obj.nix_handle, pos_idx, feat_idx);
136-
137-
% data must agree with file & dimensions; see mkarray.cc(42)
138-
r = permute(data, length(size(data)):-1:1);
130+
r = nix.Utils.transpose_array(data);
139131
end
140132

141133
function r = feature_count(obj)

+nix/Tag.m

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -67,17 +67,13 @@
6767
function r = retrieve_data(obj, id_or_name)
6868
fname = strcat(obj.alias, '::retrieveData');
6969
data = nix_mx(fname, obj.nix_handle, id_or_name);
70-
71-
% data must agree with file & dimensions; see mkarray.cc(42)
72-
r = permute(data, length(size(data)):-1:1);
70+
r = nix.Utils.transpose_array(data);
7371
end
7472

7573
function r = retrieve_data_idx(obj, idx)
7674
fname = strcat(obj.alias, '::retrieveDataIdx');
7775
data = nix_mx(fname, obj.nix_handle, idx);
78-
79-
% data must agree with file & dimensions; see mkarray.cc(42)
80-
r = permute(data, length(size(data)):-1:1);
76+
r = nix.Utils.transpose_array(data);
8177
end
8278

8379
function r = reference_count(obj)
@@ -129,17 +125,13 @@
129125
function r = retrieve_feature_data(obj, id_or_name)
130126
fname = strcat(obj.alias, '::featureRetrieveData');
131127
data = nix_mx(fname, obj.nix_handle, id_or_name);
132-
133-
% data must agree with file & dimensions; see mkarray.cc(42)
134-
r = permute(data, length(size(data)):-1:1);
128+
r = nix.Utils.transpose_array(data);
135129
end
136130

137131
function r = retrieve_feature_data_idx(obj, idx)
138132
fname = strcat(obj.alias, '::featureRetrieveDataIdx');
139133
data = nix_mx(fname, obj.nix_handle, idx);
140-
141-
% data must agree with file & dimensions; see mkarray.cc(42)
142-
r = permute(data, length(size(data)):-1:1);
134+
r = nix.Utils.transpose_array(data);
143135
end
144136

145137
function r = feature_count(obj)

+nix/Utils.m

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,15 @@
138138
rdata{i} = objConstructor(currList{i});
139139
end
140140
end
141+
142+
% -----------------------------------------------------------
143+
% c++ to matlab array functions
144+
% -----------------------------------------------------------
145+
146+
function r = transpose_array(data)
147+
% Data must agree with file & dimensions; see mkarray.cc(42)
148+
r = permute(data, length(size(data)):-1:1);
149+
end
141150
end
142151

143152
end

0 commit comments

Comments
 (0)