?? som_clget.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 + -