matthiasm@8: function sub = ind2subv(siz,index) matthiasm@8: %IND2SUBV Subscript vector from linear index. matthiasm@8: % IND2SUBV(SIZ,IND) returns a vector of the equivalent subscript values matthiasm@8: % corresponding to a single index into an array of size SIZ. matthiasm@8: % If IND is a vector, then the result is a matrix, with subscript vectors matthiasm@8: % as rows. matthiasm@8: matthiasm@8: %sub = ind2subvTest(siz, index); matthiasm@8: n = length(siz); matthiasm@8: if n==0, sub = index; return; end % added by KPM 17 Nov 07 matthiasm@8: cum_size = cumprod(siz(:)'); matthiasm@8: prev_cum_size = [1 cum_size(1:end-1)]; matthiasm@8: index = index(:) - 1; matthiasm@8: sub = rem(repmat(index,1,n),repmat(cum_size,length(index),1)); matthiasm@8: sub = floor(sub ./ repmat(prev_cum_size,length(index),1))+1; matthiasm@8: matthiasm@8: % slow way matthiasm@8: %for dim = n:-1:1 matthiasm@8: % sub(:,dim) = floor(index/cum_size(dim))+1; matthiasm@8: % index = rem(index,cum_size(dim)); matthiasm@8: %end matthiasm@8: