annotate toolboxes/FullBNT-1.0.7/KPMtools/ind2subvMinka.m @ 0:e9a9cd732c1e tip

first hg version after svn
author wolffd
date Tue, 10 Feb 2015 15:05:51 +0000
parents
children
rev   line source
wolffd@0 1 function sub = ind2subvMinka(siz,index)
wolffd@0 2 %IND2SUBV Subscript vector from linear index.
wolffd@0 3 % IND2SUBV(SIZ,IND) returns a vector of the equivalent subscript values
wolffd@0 4 % corresponding to a single index into an array of size SIZ.
wolffd@0 5 % If IND is a vector, then the result is a matrix, with subscript vectors
wolffd@0 6 % as rows.
wolffd@0 7
wolffd@0 8 % Written by Tom Minka
wolffd@0 9 % (c) Microsoft Corporation. All rights reserved.
wolffd@0 10
wolffd@0 11 n = length(siz);
wolffd@0 12 if n==0, sub = index; return; end % added by KPM 17 Nov 07
wolffd@0 13 cum_size = cumprod(siz(:)');
wolffd@0 14 prev_cum_size = [1 cum_size(1:end-1)];
wolffd@0 15 index = index(:) - 1;
wolffd@0 16 sub = rem(repmat(index,1,n),repmat(cum_size,length(index),1));
wolffd@0 17 sub = floor(sub ./ repmat(prev_cum_size,length(index),1))+1;
wolffd@0 18
wolffd@0 19 % slow way
wolffd@0 20 %for dim = n:-1:1
wolffd@0 21 % sub(:,dim) = floor(index/cum_size(dim))+1;
wolffd@0 22 % index = rem(index,cum_size(dim));
wolffd@0 23 %end