亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? som_clset.m

?? it is matlab code , som(slef organizing map) tool for matlab
?? M
字號:
function [sC,old2new,newi] = som_clset(sC,action,par1,par2)

% SOM_CLSET Create and/or set values in the som_clustering struct.
%
%   first argument
%     sC       (struct) a som_clustering struct
%     Z        (matrix) size nb-1 x 3, as given by LINKAGE function
%     base     (vector) size dlen x 1, a partitioning of the data
%
%   actions    
%     'remove'           removes the indicated clusters (par1: vector)
%     'add'              add a cluster by making a combination of the indicated
%                        clusters (par1: vector)
%     %'move'             moves a child cluster (par1: scalar) from a parent to another
%     %                   (par2: vector 1 x 2)
%     'merge'            like 'add', followed by removing the indicated clusters (par1: vector)
%     %'split'            the indicated cluster (par1: scalar) is partitioned into indicated
%     %                   parts (par2: vector), which are then added, while the indicated cluster
%     %                   (par1) is removed
%     'coord'            sets the coordinates of base clusters (par1: matrix nb x *), and 
%                        recalculates coordinates of the derived clusters (by averaging base cluster
%                        coordinates)
%     'color'            sets the colors of base clusters (par1: matrix nb x 3), and recalculates
%                        colors of the derived clusters (as averages of base cluster colors)
%                        
%   sC
%     .type     (string) 'som_clustering'
%     .name     (string) Identifier for the clustering.
%     .nb       (scalar) Number of base clusters in the clustering.
%     .base     (vector) Size dlen x 1, the basic groups of data 
%                        forming the base clusters, e.g. as a result 
%                        of partitive clustering. Allowed values are 
%                         1:nb   indicating the base cluster
%                                to which the data belongs to. 
%                         NaN    indicating that the data has
%                                been ignored in the clustering                        
%     .nc       (scalar) Number of clusters in the clustering (nb + derived clusters).
%     .children (cellarray) size nc x 1, each cell gives the list of indeces
%                        of child clusters for the cluster
%     .parent   (vector) size nc x 1, the index of parent of each cluster 
%                        (or zero if the cluster does not have a parent)
%     .coord    (matrix) size nc x *, visualization coordinates for each cluster
%                        By default the coordinates are set so that 
%                        the base clusters are ordered on a line, and the
%                        position of each combined cluster is average of 
%                        the base clusters that constitute it.
%     .color    (matrix) size nc x 3, color for each cluster. 
%                        By default the colors are set so that the 
%                        base clusters are ordered on a line,
%                        and then colors are assigned from the 'hsv' 
%                        colormap to the base clusters. The color
%                        of each combined cluster is average as above.
%     .cldist   (string) Default cluster distance function.

inew = []; 
if isstruct(sC), 
    % it should be a som_clustering struct
    old2new = [1:sC.nc];
elseif size(sC,2)==3, 
    % assume it is a cluster hierarchy matrix Z 
    sC = Z2sC(sC); 
    old2new = [1:sC.nc];
else
    % assume it is a partitioning vector
    base = sC; 
    u = unique(base(isfinite(base)));
    old2new = sparse(u,1,1:length(u));
    base = old2new(base);
    sC = part2sC(base); 
end 

switch action, 
case 'remove',        
    for i=1:length(par1),         
        [sC,o2n] = removecluster(sC,old2new(par1(i)));
        old2new = o2n(old2new);
    end 
case 'add', 
    [sC,old2new,inew] = addmergedcluster(sC,par1);    
case 'move',
    % not implemented yet
case 'split', 
    % not implemented yet
case 'merge', 
    [sC,old2new,inew] = addmergedcluster(sC,par1);
    for i=1:length(par1), 
        [sC,o2n] = removecluster(sC,old2new(par1(i)));
        old2new = o2n(old2new);
    end 
case 'color', 
    sC.color = derivative_average(sC,par1);
case 'coord',
    sC.coord = derivative_average(sC,par1);
end 

return;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% subfunctions

function sC = clstruct(nb,nc)

    sC = struct('type','som_clustering',...
                'name','','base',[],'nb',nb,'nc',nc,...
                'parent',[],'children',[],'coord',[],'color',[],'cldist','centroid');
    sC.base = [1:nb]; 
    sC.parent = zeros(nc,1);
    sC.children = cell(nc,1); sC.children(:) = {[]}; 
    sC.coord = zeros(nc,2);
    sC.color = zeros(nc,3);
    return;

function Z = sC2Z(sC,height)

    if nargin<2, height = 'level'; end

    root   = find(sC.parent==0); 
    order  = [root]; 
    ch     = sC.children(root); 
    while any(ch), i = ch(1); order = [ch(1), order]; ch = [ch(2:end), sC.children{i}]; end 

    he = zeros(sC.nc,1); 
    if strcmp(height,'level'), 
        ch = sC.children{root}; 
        while any(ch),
            i = ch(1); he(i) = he(sC.parent(i))+1; 
            ch = [ch(2:end), sC.children{i}]; 
        end 
        he = max(he)-he; 
    elseif strcmp(height,'level2'), 
        for i=order, if any(sC.children{i}), he(i) = max(he(sC.children{i}))+1; end, end
    else
        %he = som_cldist ( between children )
    end 
    
    Z = zeros(sC.nb-1,3);    
    i = sC.nb-1; 
    inds = root; 
    while i>0, 
        ch = sC.children{inds(1)}; h = he(inds(1)); inds = [inds(2:end), ch]; 
        if length(ch)>=2,
            for k=1:length(ch)-2, Z(i,:) = [i-1, ch(k), h]; i = i - 1; end
            Z(i,:) = [ch(end-1) ch(end) h]; i = i - 1;             
        end 
    end 
    return;

function sC = Z2sC(Z)

    nb        = size(Z,1)+1;
    nc        = 2*nb-1;
    sC        = clstruct(nb,nc);
    sC.base   = [1:nb];
    for i=1:nc, 
        j = find(Z(:,1)==i | Z(:,2)==i); 
        sC.parent(i) = nb+j;
        sC.children{sC.parent(i)}(end+1) = i; 
    end 
    % coords and color
    order = nc; 
    nonleaves = 1; 
    while any(nonleaves), 
        j = nonleaves(1); 
        ch = sC.children{order(j)};
        if j==1, oleft = []; else oleft = order(1:(j-1)); end
        if j==length(order), oright = []; else oright = order((j+1):length(order)); end
        order = [oleft, ch, oright];
        nonleaves = find(order>nb); 
    end
    [dummy,co] = sort(order);     
    sC.coord   = derivative_average(sC,co');
    H          = hsv(nb+1);
    sC.color   = derivative_average(sC,H(co,:));    
    return;
    
function sC = part2sC(part)

    nb      = max(part); 
    nc      = nb+1; 
    sC      = clstruct(nb,nc);
    sC.base = part; 
    sC.parent(1:nb) = nc; 
    sC.children{nc} = [1:nb]; 
    co       = [1:nb]'; 
    sC.coord = derivative_average(sC,co);
    H        = hsv(nb+1);
    sC.color = derivative_average(sC,H(1:nb,:));
    return;

function [sC,old2new] = removecluster(sC,ind)
  
    old2new = [1:sC.nc]; 
    parent_ind = sC.parent(ind);
    ch = sC.children{ind};
    if ~parent_ind, 
        % trying to remove root cluster - no go
        return; 
    elseif ~any(ch), 
        % trying to remove a base cluster - no go
        return;
    else
        % ok, proceed
        old2new = [1:ind-1 0 ind:sC.nc-1];
        % update parent and child fields
        sC.parent(ch) = parent_ind;
        sC.children{parent_ind} = setdiff([sC.children{parent_ind}, ch],ind);
        % remove old cluster
        j = [1:ind-1, ind+1:sC.nc]; 
        sC.parent   = sC.parent(j);
        sC.children = sC.children(j);
        sC.color    = sC.color(j,:);
        sC.coord    = sC.coord(j,:);
        sC.nc       = sC.nc-1; 
        % update old indeces to new indices
        sC.parent = old2new(sC.parent);
        for i=1:sC.nc, sC.children{i} = old2new(sC.children{i}); end
    end     
    return;

function [sC,old2new,inew] = addmergedcluster(sC,inds)

    old2new    = [1:sC.nc]; 
    inew       = 0; 
    p_inds     = sC.parent(inds); 
    if ~all(p_inds(1)==p_inds),  
        % clusters are not siblings - no go
        return;
    end
    parent_ind = p_inds(1); 
    if isempty(setdiff(sC.children{parent_ind},inds)),  
        % such a merged cluster exists already
        return;     
    else
        % ok, proceed
        inew = parent_ind;
        old2new = [1:inew-1,inew+1:sC.nc+1];
        % add the new cluster (=copy of parent_ind) 
        j = [1:inew,inew:sC.nc];
        sC.parent   = sC.parent(j);
        sC.children = sC.children(j);
        sC.color    = sC.color(j,:);
        sC.coord    = sC.coord(j,:);
        sC.nc       = sC.nc+1;
        % update old indeces to new indices
        sC.parent = old2new(sC.parent);
        for i=1:sC.nc, sC.children{i} = old2new(sC.children{i}); end
        inds = old2new(inds);
        parent_ind = old2new(parent_ind);
        % update parent, child, color and coord fields
        sC.parent(inds)         = inew; 
        sC.parent(inew)         = parent_ind;
        sC.children{inew}       = inds; 
        sC.children{parent_ind} = [setdiff(sC.children{parent_ind}, inds), inew];
        b = baseind(sC,inew); 
        sC.color(inew,:)        = mean(sC.color(b,:));
        sC.coord(inew,:)        = mean(sC.coord(b,:));
    end    
    return;
    
function C = derivative_average(sC,Cbase)

    [n dim] = size(Cbase);
    if n ~= sC.nb, error('Color / Coord matrix should have nb rows'); end
    C = zeros(sC.nc,dim);     
    for i=1:sC.nc, C(i,:) = mean(Cbase(baseind(sC,i),:)); end   
    return;
    
function bi = baseind(sC,ind)

    bi = [ind]; 
    i = 1; 
    while i<=length(bi), bi = [bi, sC.children{bi(i)}]; end 
    bi = bi(bi<=sC.nb);
    return;
  

      
      

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
性久久久久久久久| 久久青草国产手机看片福利盒子| 极品销魂美女一区二区三区| 亚洲午夜精品久久久久久久久| 亚洲三级久久久| 亚洲精品免费播放| 日本一道高清亚洲日美韩| 久久99精品久久久久| 色94色欧美sute亚洲线路二| 国产一区日韩二区欧美三区| 亚洲久草在线视频| 国产午夜精品久久久久久免费视| 麻豆一区二区三| 久久久久久久国产精品影院| 日韩精品一二三四| 亚洲mv大片欧洲mv大片精品| 自拍av一区二区三区| 欧美日韩中文字幕一区二区| 日本不卡高清视频| 久久久激情视频| 91国在线观看| 久久国产日韩欧美精品| 国产精品美女久久久久久久久久久| 在线观看日产精品| 国产欧美精品一区二区三区四区 | 亚洲一区二区欧美激情| 视频一区视频二区中文| 成人涩涩免费视频| 91麻豆精品国产91久久久资源速度| 色av一区二区| 又紧又大又爽精品一区二区| 日韩国产高清影视| 成人av电影在线观看| 亚洲福利视频三区| 久久久久9999亚洲精品| 在线一区二区视频| 韩国一区二区三区| 亚洲成av人片| 国产精品初高中害羞小美女文| 欧美一区二区三区日韩| 91欧美一区二区| 国产精品一卡二卡在线观看| 亚洲www啪成人一区二区麻豆| 久久久精品日韩欧美| 欧美日韩高清一区| 成人91在线观看| 国产久卡久卡久卡久卡视频精品| 亚洲成人www| ㊣最新国产の精品bt伙计久久| 2020日本不卡一区二区视频| 欧美日韩和欧美的一区二区| 不卡免费追剧大全电视剧网站| 久久狠狠亚洲综合| 视频一区中文字幕| 亚洲在线免费播放| 亚洲欧美日韩国产另类专区| 国产亚洲欧美日韩俺去了| 欧美福利视频一区| 欧美三级视频在线观看| 色久优优欧美色久优优| 91在线精品一区二区| 麻豆国产91在线播放| 亚洲成人午夜影院| 精品国产91洋老外米糕| 国产成人aaa| 亚洲成人免费视| 精品国产一区二区三区av性色| 九色综合狠狠综合久久| 中文字幕综合网| 不卡一区二区三区四区| 日韩av电影免费观看高清完整版 | 欧美xxxxx牲另类人与| 欧美日韩在线精品一区二区三区激情 | 亚洲色欲色欲www| 国产精品久久久久久亚洲毛片| 国产农村妇女毛片精品久久麻豆| 久久综合中文字幕| 国产日产欧美一区二区三区| 国产色爱av资源综合区| 国产欧美综合在线观看第十页| 久久青草欧美一区二区三区| 国产视频一区在线播放| 中文字幕国产一区二区| 国产精品第五页| 亚洲精品久久久久久国产精华液| 亚洲一区二区在线观看视频| 亚洲成人激情社区| 青青草97国产精品免费观看无弹窗版 | 91精品国产综合久久福利| 欧美一级日韩不卡播放免费| 精品裸体舞一区二区三区| 久久精品视频一区二区| 欧美国产一区二区| 亚洲免费观看高清完整版在线观看熊 | 亚洲精品v日韩精品| 午夜精品视频在线观看| 人人精品人人爱| 国产米奇在线777精品观看| 成人av手机在线观看| 欧美三级日韩三级国产三级| 日韩欧美一区二区不卡| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 欧美三级日韩三级| 精品成人一区二区| 欧美精品久久久久久久多人混战 | 亚洲免费视频成人| 亚洲第一搞黄网站| 日本不卡不码高清免费观看| 亚洲国产精品尤物yw在线观看| 亚洲同性gay激情无套| 一区二区三区不卡视频| 亚洲国产中文字幕| 日日夜夜免费精品视频| 国产一区二区三区在线观看精品| 国产精品国产三级国产普通话99| 亚洲免费在线视频一区 二区| 婷婷综合久久一区二区三区| 国产美女av一区二区三区| 在线观看日韩高清av| 精品国产91久久久久久久妲己 | 亚洲综合色丁香婷婷六月图片| 婷婷丁香久久五月婷婷| a在线欧美一区| 欧美一区二区三区性视频| 中文字幕色av一区二区三区| 青青草国产成人99久久| 色综合中文综合网| 精品国产自在久精品国产| 中文字幕在线观看一区二区| 日韩成人一区二区三区在线观看| 国产99久久久国产精品潘金 | 美女尤物国产一区| 一本色道久久综合亚洲91| 欧美成人国产一区二区| 亚洲国产cao| 99久久综合精品| 欧美成人一区二区三区片免费 | 蜜臀久久99精品久久久久宅男| 国产精品萝li| 国产精品久久午夜夜伦鲁鲁| 天堂午夜影视日韩欧美一区二区| 成人毛片在线观看| 精品乱人伦一区二区三区| 午夜精品福利久久久| 99re66热这里只有精品3直播 | 欧美电视剧免费观看| 亚洲一二三四在线| 色综合色综合色综合色综合色综合 | 美女任你摸久久| 337p亚洲精品色噜噜| 一区二区三区不卡在线观看| 成人免费高清在线观看| 精品成人免费观看| 美女尤物国产一区| 日韩午夜在线观看| 午夜私人影院久久久久| 欧洲精品一区二区| 亚洲激情网站免费观看| 91女神在线视频| 樱桃国产成人精品视频| 色综合久久综合网97色综合| 亚洲欧洲国产日本综合| 99精品视频免费在线观看| 国产精品久久免费看| 成人免费看片app下载| 久久久亚洲高清| av不卡免费电影| 国产精品久久久久久久久图文区 | 成人美女视频在线观看18| 国产精品午夜免费| 波多野结衣一区二区三区| 久久精品欧美一区二区三区麻豆| 另类小说图片综合网| 欧美成人免费网站| 国产一区二区三区免费看| 久久精品视频免费观看| 本田岬高潮一区二区三区| 亚洲人成电影网站色mp4| 91丨九色丨尤物| 性欧美疯狂xxxxbbbb| 欧美一区二区三区免费观看视频 | 免费人成精品欧美精品| 亚洲精品一区二区三区在线观看| 激情综合色综合久久| 国产亚洲欧美一级| 91视视频在线观看入口直接观看www| 亚洲嫩草精品久久| 在线综合亚洲欧美在线视频| 九九**精品视频免费播放| 国产亚洲婷婷免费| 日本道精品一区二区三区| 日本视频在线一区| 国产亚洲欧美日韩日本| 色呦呦国产精品| 日本vs亚洲vs韩国一区三区| 欧美激情综合五月色丁香小说| 91蜜桃在线免费视频| 日本三级亚洲精品| 国产精品美女久久久久久久| 欧美日韩一区二区三区视频|