annotate toolboxes/FullBNT-1.0.7/KPMtools/ind2subv.m @ 0:cc4b1211e677 tip

initial commit to HG from Changeset: 646 (e263d8a21543) added further path and more save "camirversion.m"
author Daniel Wolff
date Fri, 19 Aug 2016 13:07:06 +0200
parents
children
rev   line source
Daniel@0 1 function sub = ind2subv(siz,index)
Daniel@0 2 %IND2SUBV Subscript vector from linear index.
Daniel@0 3 % IND2SUBV(SIZ,IND) returns a vector of the equivalent subscript values
Daniel@0 4 % corresponding to a single index into an array of size SIZ.
Daniel@0 5 % If IND is a vector, then the result is a matrix, with subscript vectors
Daniel@0 6 % as rows.
Daniel@0 7
Daniel@0 8 %sub = ind2subvTest(siz, index);
Daniel@0 9 n = length(siz);
Daniel@0 10 if n==0, sub = index; return; end % added by KPM 17 Nov 07
Daniel@0 11 cum_size = cumprod(siz(:)');
Daniel@0 12 prev_cum_size = [1 cum_size(1:end-1)];
Daniel@0 13 index = index(:) - 1;
Daniel@0 14 sub = rem(repmat(index,1,n),repmat(cum_size,length(index),1));
Daniel@0 15 sub = floor(sub ./ repmat(prev_cum_size,length(index),1))+1;
Daniel@0 16
Daniel@0 17 % slow way
Daniel@0 18 %for dim = n:-1:1
Daniel@0 19 % sub(:,dim) = floor(index/cum_size(dim))+1;
Daniel@0 20 % index = rem(index,cum_size(dim));
Daniel@0 21 %end
Daniel@0 22