⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 som_clget.m

📁 Kohonen的SOM软件包
💻 M
字号:
function a = som_clget(sC, mode, ind)%SOM_CLGET Get properties of specified clusters.%%  a = som_clget(sC, mode, ind)% %     inds = som_clget(sC,'dinds',20); %     col  = som_clget(sC,'depth',[1 2 3 20 54]); %%  Input and output arguments: %    sC     (struct) clustering struct%    mode   (string) what kind of property is requested%                    'binds' (a union over) indeces of base clusters %                            belonging to the specified cluster(s)%                    'dinds' (a union over) indeces of the data vectors %                            belonging to the specified cluster(s)%                    'dlen'  number of data vectors belonging %                            to each of the specified cluster(s)%                    'depth' depths of the specified clusters%                            (depth of the root cluster is 0, %                             depth of its children are 1, etc.)%                    'child' (a union over) children clusters %                             of specified cluster(s), including%                             the clusters themselves%                    'base'  base partitioning based on given %                            clusters%    ind    (vector) indeces of the clusters%    %    a      (vector) the answer%% See also  SOM_CLSTRUCT, SOM_CLPLOT.% Copyright (c) 2000 by the SOM toolbox programming team.% Contributed to SOM Toolbox on XXX by Juha Vesanto% http://www.cis.hut.fi/projects/somtoolbox/% Version 2.0beta juuso 180800%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%clen = size(sC.tree,1)+1; switch mode,  case 'binds',   a = [];   for i=1:length(ind), a = [a, getbaseinds(sC.tree,ind(i))]; end  a = unique(a); case 'dinds',   b = [];   for i=1:length(ind), b = [b, getbaseinds(sC.tree,ind(i))]; end  b = unique(b);  a = zeros(length(sC.base),1);   for i=1:length(b), a(find(sC.base==b(i)))=1; end  a = find(a);  case 'dlen',   a = zeros(length(ind),1);   for i=1:length(ind),     b = getbaseinds(sC.tree,ind(i));     for j=1:length(b), a(i) = a(i) + sum(sC.base==b(j)); end  end case 'depth',   a = getdepth(sC.tree);   a = a(ind); case 'child',   a = getchildren(sC.tree,ind);  case 'base',  a = sC.base*0;   ind = -sort(-ind);  for i=1:length(ind), a(som_clget(sC,'dinds',ind(i))) = ind(i); endendreturn; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%function ch = getchildren(Z,ind)  clen = size(Z,1)+1;   ch = ind; cho = ind;   while any(cho),     i = cho(1); cho = cho(2:end);     j = Z(i-clen,1); k = Z(i-clen,2);     if j>clen, cho(end+1) = j; end    if k>clen, cho(end+1) = k; end    ch(end+1) = j; ch(end+1) = k;   end  return;function binds = getbaseinds(Z,ind)  clen = size(Z,1)+1;   binds = ind;   while binds(1)>clen,       i = binds(1);     binds = binds(2:end);     j = Z(i-clen,1); k = Z(i-clen,2);      if j>clen, binds = [j binds]; else binds(end+1) = j; end    if k>clen, binds = [k binds]; else binds(end+1) = k; end  end  return;function depth = getdepth(Z)  clen = size(Z,1)+1;   depth = zeros(2*clen-1,1);   ch = 2*clen-1; % active nodes  while any(ch),     c  = ch(1); ch = ch(2:end);    if c>clen & isfinite(Z(c-clen,3)),       chc = Z(c-clen,1:2); % children of c      depth(chc) = depth(c) + 1; % or +(ind==chc(1))      ch = [ch, chc];     end  end  return; 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -