Mercurial > hg > camir-aes2014
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 |