diff options
Diffstat (limited to 'sourcecodes/bnt-master/KPMtools/ind2subvMinka.m')
| -rw-r--r-- | sourcecodes/bnt-master/KPMtools/ind2subvMinka.m | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/sourcecodes/bnt-master/KPMtools/ind2subvMinka.m b/sourcecodes/bnt-master/KPMtools/ind2subvMinka.m new file mode 100644 index 00000000..4f2bcbef --- /dev/null +++ b/sourcecodes/bnt-master/KPMtools/ind2subvMinka.m @@ -0,0 +1,23 @@ +function sub = ind2subvMinka(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. + +% Written by Tom Minka +% (c) Microsoft Corporation. All rights reserved. + +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 |
