wolffd@0
|
1 function Subs = som_ind2sub(msize,inds)
|
wolffd@0
|
2
|
wolffd@0
|
3 %SOM_IND2SUB Map grid subscripts from linear index.
|
wolffd@0
|
4 %
|
wolffd@0
|
5 % Subs = som_ind2sub(msize,inds)
|
wolffd@0
|
6 %
|
wolffd@0
|
7 % sub = som_ind2sub([10 15],44);
|
wolffd@0
|
8 % sub = som_ind2sub(sMap,44);
|
wolffd@0
|
9 % sub = som_ind2sub(sMap.msize,44);
|
wolffd@0
|
10 % Subs = som_ind2sub([10 15],[44 13 91]');
|
wolffd@0
|
11 %
|
wolffd@0
|
12 % Input and output arguments:
|
wolffd@0
|
13 % msize (struct) map or topology struct
|
wolffd@0
|
14 % (vector) size 1 x m, specifies the map grid size
|
wolffd@0
|
15 % inds (vector) size n x 1, linear indeces of n map units
|
wolffd@0
|
16 %
|
wolffd@0
|
17 % Subs (matrix) size n x m, the subscripts
|
wolffd@0
|
18 %
|
wolffd@0
|
19 % See also SOM_SUB2IND.
|
wolffd@0
|
20
|
wolffd@0
|
21 % Contributed to SOM Toolbox vs2, February 2nd, 2000 by Juha Vesanto
|
wolffd@0
|
22 % http://www.cis.hut.fi/projects/somtoolbox/
|
wolffd@0
|
23
|
wolffd@0
|
24 % Version 2.0beta juuso 300798
|
wolffd@0
|
25
|
wolffd@0
|
26 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
wolffd@0
|
27
|
wolffd@0
|
28 if isstruct(msize),
|
wolffd@0
|
29 if strcmp(msize.type,'som_map'), msize = msize.topol.msize;
|
wolffd@0
|
30 elseif strcmp(msize.type,'som_topol'), msize = msize.msize;
|
wolffd@0
|
31 else error('Invalid first argument.'); end
|
wolffd@0
|
32 end
|
wolffd@0
|
33
|
wolffd@0
|
34 n = length(msize);
|
wolffd@0
|
35 k = [1 cumprod(msize(1:end-1))];
|
wolffd@0
|
36 inds = inds - 1;
|
wolffd@0
|
37 for i = n:-1:1,
|
wolffd@0
|
38 Subs(:,i) = floor(inds/k(i))+1;
|
wolffd@0
|
39 inds = rem(inds,k(i));
|
wolffd@0
|
40 end
|
wolffd@0
|
41
|
wolffd@0
|
42 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|