about summary refs log tree commit diff
path: root/sourcecodes/bnt-master/KPMtools/ind2subv.m
diff options
context:
space:
mode:
authorziejd22018-03-14 23:23:33 -0500
committerGitHub2018-03-14 23:23:33 -0500
commit1ff6baa44e22b91eefb48aea6f3befa078c0489b (patch)
treee0fd79d2e32fd2aedda2eadaed0f19af3514c520 /sourcecodes/bnt-master/KPMtools/ind2subv.m
parent6882395afdadf4e982b25b5215071a0932730950 (diff)
parentc80226899f5cdd9f11c163817d59445213f5bef0 (diff)
downloadBNW-1ff6baa44e22b91eefb48aea6f3befa078c0489b.tar.gz
Merge pull request #1 from ziejd2/octave_php_separate
Octave php separate
Diffstat (limited to 'sourcecodes/bnt-master/KPMtools/ind2subv.m')
-rw-r--r--sourcecodes/bnt-master/KPMtools/ind2subv.m22
1 files changed, 22 insertions, 0 deletions
diff --git a/sourcecodes/bnt-master/KPMtools/ind2subv.m b/sourcecodes/bnt-master/KPMtools/ind2subv.m
new file mode 100644
index 00000000..6d9c4308
--- /dev/null
+++ b/sourcecodes/bnt-master/KPMtools/ind2subv.m
@@ -0,0 +1,22 @@
+function sub = ind2subv(siz,index)
+%IND2SUBV   Subscript vector from linear index.
+% IND2SUBV(SIZ,IND) returns a vector of the equivalent subscript values 
+% corresponding to a single index into an array of size SIZ.
+% If IND is a vector, then the result is a matrix, with subscript vectors
+% as rows.
+
+%sub = ind2subvTest(siz, index);
+n = length(siz);
+if n==0, sub = index; return; end % added by KPM 17 Nov 07
+cum_size = cumprod(siz(:)');
+prev_cum_size = [1 cum_size(1:end-1)];
+index = index(:) - 1;
+sub = rem(repmat(index,1,n),repmat(cum_size,length(index),1));
+sub = floor(sub ./ repmat(prev_cum_size,length(index),1))+1;
+
+% slow way
+%for dim = n:-1:1
+%  sub(:,dim) = floor(index/cum_size(dim))+1;
+%  index = rem(index,cum_size(dim));
+%end
+