wolffd@0: function Subs = som_ind2sub(msize,inds) wolffd@0: wolffd@0: %SOM_IND2SUB Map grid subscripts from linear index. wolffd@0: % wolffd@0: % Subs = som_ind2sub(msize,inds) wolffd@0: % wolffd@0: % sub = som_ind2sub([10 15],44); wolffd@0: % sub = som_ind2sub(sMap,44); wolffd@0: % sub = som_ind2sub(sMap.msize,44); wolffd@0: % Subs = som_ind2sub([10 15],[44 13 91]'); wolffd@0: % wolffd@0: % Input and output arguments: wolffd@0: % msize (struct) map or topology struct wolffd@0: % (vector) size 1 x m, specifies the map grid size wolffd@0: % inds (vector) size n x 1, linear indeces of n map units wolffd@0: % wolffd@0: % Subs (matrix) size n x m, the subscripts wolffd@0: % wolffd@0: % See also SOM_SUB2IND. wolffd@0: wolffd@0: % Contributed to SOM Toolbox vs2, February 2nd, 2000 by Juha Vesanto wolffd@0: % http://www.cis.hut.fi/projects/somtoolbox/ wolffd@0: wolffd@0: % Version 2.0beta juuso 300798 wolffd@0: wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: if isstruct(msize), wolffd@0: if strcmp(msize.type,'som_map'), msize = msize.topol.msize; wolffd@0: elseif strcmp(msize.type,'som_topol'), msize = msize.msize; wolffd@0: else error('Invalid first argument.'); end wolffd@0: end wolffd@0: wolffd@0: n = length(msize); wolffd@0: k = [1 cumprod(msize(1:end-1))]; wolffd@0: inds = inds - 1; wolffd@0: for i = n:-1:1, wolffd@0: Subs(:,i) = floor(inds/k(i))+1; wolffd@0: inds = rem(inds,k(i)); wolffd@0: end wolffd@0: wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%