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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? kmeans.m

?? kmean algorithm for image segmentation
?? M
字號:
function [centers,mincenter,mindist,q2,quality] = kmeans(data,initcenters,method)
% output: final centers
% output: final centers
% input: data points and initial centers
% if initcenters is a number k, create k centers and start with these
% otherwise, use centers given as input
% method = 0: unoptimized, using n by k matrix of distances O(nk) space
%          1: vectorized, using only O(n+k) space
%          2: like 1, in addition using distance inequalities (default)

tic
if nargin < 3 method = 2; end
[n,dim] = size(data);

if max(size(initcenters)) == 1
    k = initcenters;
    [centers, mincenter, mindist, lower, computed] = anchors(mean(data),k,data);
    total = computed;
    skipestep = 1;
else 
    centers = initcenters;
    mincenter = zeros(n,1);
    total = 0;
    skipestep = 0;
    [k,dim2] = size(centers);    
    if dim ~= dim2 error('dim(data) ~= dim(centers)'); end;
end

nchanged = n;
iteration = 0;
oldmincenter = zeros(n,1);

while nchanged > 0
    % do one E step, then one M step
    computed = 0;
    
    if method == 0 & ~skipestep
        for i = 1:n
            for j = 1:k
                distmat(i,j) = calcdist(data(i,:),centers(j,:));
            end
        end
        [mindist,mincenter] = min(distmat,[],2);
        computed = k*n;

    elseif (method == 1 | (method == 2 & iteration == 0)) & ~skipestep
        mindist = Inf*ones(n,1);
        lower = zeros(n,k);
        for j = 1:k
           jdist = calcdist(data,centers(j,:));
           lower(:,j) = jdist;
           track = find(jdist < mindist);
           mindist(track) = jdist(track);
           mincenter(track) = j;
        end
        computed = k*n;

    elseif method == 2 & ~skipestep 
        computed = 0;

% for each center, nndist is half the distance to the nearest center
% if d(x,center) < nndist then x cannot belong to any other center
% mindist is an upper bound on the distance of each point to its nearest center

        nndist = min(centdist,[],2);
% the following usually is not faster        
%        ldist = min(lower,[],2);
%        mobile = find(mindist > max(nndist(mincenter),ldist));
        mobile = find(mindist > nndist(mincenter));
        
% recompute distances for point i and center j 
%       only if j can possibly be the new nearest center
% for speed, the first check has been optimized by modifying centdist
% swapping the order of the checks is slower for data with natural clusters

        mdm = mindist(mobile);
        mcm = mincenter(mobile);
 
        for j = 1:k
% the following is incorrect: for j = unique(mcm)'
            track = find(mdm > centdist(mcm,j));
            if isempty(track) continue; end
            alt = find(mdm(track) > lower(mobile(track),j));          
            if isempty(alt) continue; end
            track1 = mobile(track(alt));
                    
% calculate exact distances to the mincenter
% recalculate separately for each jj to avoid copying too much of data
% redo may be empty, but we don't need to check this
            redo = find(~recalculated(track1));
            redo = track1(redo);
            c = mincenter(redo);
            computed = computed + size(redo,1);
            for jj = unique(c)'
                rp = redo(find(c == jj));
                udist = calcdist(data(rp,:),centers(jj,:));
                lower(rp,jj) = udist;
                mindist(rp) = udist;
            end
            recalculated(redo) = 1;
            
            track2 = find(mindist(track1) > centdist(mincenter(track1),j));
            track1 = track1(track2);
            if isempty(track1) continue; end
           
            % calculate exact distances to center j
            track4 = find(lower(track1,j) < mindist(track1));
            if isempty(track4) continue; end
            track5 = track1(track4);
            jdist = calcdist(data(track5,:),centers(j,:));
            computed = computed + size(track5,1);
            lower(track5,j) = jdist;
                    
            % find which points really are assigned to center j
            track2 = find(jdist < mindist(track5));
            track3 = track5(track2);
            mindist(track3) = jdist(track2);
            mincenter(track3) = j;
        end % for j=1:k
    end % if method
      
    oldcenters = centers;
        
% M step: recalculate the means for each cluster
% if a cluster is empty, its mean is left unchanged
% we minimize computations for clusters with little changed membership
    
    diff = find(mincenter ~= oldmincenter);
    diffj = unique([mincenter(diff);oldmincenter(diff)])';
    diffj = diffj(find(diffj > 0));
    
    if size(diff,1) < n/3 & iteration > 0
         for j = diffj
            plus = find(mincenter(diff) == j);
            minus = find(oldmincenter(diff) == j);
            oldpop = pop(j);
            pop(j) = pop(j) + size(plus,1) - size(minus,1);
            if pop(j) == 0 continue; end
            centers(j,:) = (centers(j,:)*oldpop + sum(data(diff(plus),:),1) - sum(data(diff(minus),:),1))/pop(j); 
        end
    else
        for j = diffj
            track = find(mincenter == j);
            pop(j) = size(track,1);
            if pop(j) == 0 continue; end
% it's correct to have mean(data(track,:),1) but this can make answer worse!
            centers(j,:) = mean(data(track,:),1);
        end
    end
    
    if method == 2
        for j = diffj
            offset = calcdist(centers(j,:),oldcenters(j,:));
            computed = computed + 1;
            if offset == 0 continue; end
            track = find(mincenter == j);
            mindist(track) = mindist(track) + offset;
            lower(:,j) = max(lower(:,j) - offset,0);
        end

% compute distance between each pair of centers
% modify centdist to make "find" using it faster
        recalculated = zeros(n,1);
        realdist = alldist(centers);
        centdist = 0.5*realdist + diag(Inf*ones(k,1));
        computed = computed + k + k*(k-1)/2;   
    end
    
    nchanged = size(diff,1) + skipestep;
    iteration = iteration+1;
    skipestep = 0;
    oldmincenter = mincenter;

%   difference = max(max(abs(oldcenters - centers)));
%   [iteration toc nchanged computed size(diffj,2)]
    [iteration toc nchanged computed]
    total = total + computed;
end % while nchanged > 0

udist = calcdist(data,centers(mincenter,:));
quality = mean(udist);
q2 = mean(udist.^2);
[iteration toc quality q2 total]

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
美女在线视频一区| 亚洲h精品动漫在线观看| 欧美久久久一区| 91福利在线免费观看| 91在线一区二区| 91视频在线看| 欧美主播一区二区三区| 欧美色老头old∨ideo| 欧美日韩色一区| 91麻豆精品国产无毒不卡在线观看| 欧美日韩另类一区| 欧美一区二区日韩一区二区| 久久综合中文字幕| 亚洲国产精品影院| 日本在线观看不卡视频| 久久国内精品自在自线400部| 国产老肥熟一区二区三区| 国产91在线|亚洲| 欧美在线观看视频一区二区三区| 欧美精品日韩一区| 久久久久久久综合色一本| 国产精品乱码一区二三区小蝌蚪| 亚洲欧美日韩中文字幕一区二区三区| 一区二区三区毛片| 免费看欧美女人艹b| 国产美女在线观看一区| 成人91在线观看| 欧美日韩国产综合一区二区 | 国产福利不卡视频| 成人精品电影在线观看| 在线观看免费成人| 欧美成人精品二区三区99精品| 中日韩av电影| 亚洲动漫第一页| 国产高清成人在线| 欧美日精品一区视频| 国产亚洲人成网站| 香蕉久久夜色精品国产使用方法 | 久久久久9999亚洲精品| 亚洲视频免费在线| 久久国产福利国产秒拍| av一区二区三区四区| 欧美二区乱c少妇| 中文字幕亚洲电影| 免费观看在线综合| 在线亚洲免费视频| 国产丝袜欧美中文另类| 天堂av在线一区| 99久久免费国产| 久久久久88色偷偷免费| 午夜精品一区二区三区电影天堂 | 一本大道久久精品懂色aⅴ| 日韩欧美中文字幕一区| 一区二区三区日韩欧美| 国产v综合v亚洲欧| 欧美一区在线视频| 午夜影院在线观看欧美| 99国产精品国产精品久久| 久久先锋资源网| 青青草成人在线观看| 91成人免费在线| 国产精品乱码一区二区三区软件| 麻豆传媒一区二区三区| 欧美美女直播网站| 亚洲一区二区三区在线看| 99国产精品久久久久久久久久久 | 色狠狠桃花综合| 国产精品国产三级国产专播品爱网| 激情欧美一区二区三区在线观看| 欧美日本一区二区三区四区| 伊人开心综合网| 日本精品一级二级| 亚洲免费观看高清完整版在线观看熊| 国产99久久久久久免费看农村| 久久五月婷婷丁香社区| 国模一区二区三区白浆| 欧美成人三级电影在线| 极品美女销魂一区二区三区免费| 欧美一区二区私人影院日本| 日韩在线观看一区二区| 337p亚洲精品色噜噜狠狠| 日本伊人午夜精品| 欧美成人三级在线| 丁香另类激情小说| 亚洲欧美乱综合| 欧美这里有精品| 日本vs亚洲vs韩国一区三区| 日韩视频国产视频| 国产精品一区专区| 国产精品卡一卡二卡三| 色综合天天综合在线视频| 亚洲综合激情小说| 欧美一级一区二区| 国产在线播放一区三区四| 亚洲国产精品成人综合色在线婷婷| 夫妻av一区二区| 亚洲国产成人tv| 精品国产乱码久久久久久1区2区| 国产一区二区三区四区五区入口 | 一本色道综合亚洲| 偷窥国产亚洲免费视频| 日韩精品一区二区三区在线观看| 国产精品一区三区| 亚洲精品日韩综合观看成人91| 欧美日本一区二区| 激情六月婷婷久久| 亚洲人成影院在线观看| 欧美日韩黄色影视| 成人免费精品视频| 日日骚欧美日韩| 国产精品久久久一区麻豆最新章节| 色婷婷香蕉在线一区二区| 视频一区在线播放| 国产精品五月天| 91.com在线观看| 顶级嫩模精品视频在线看| 天堂va蜜桃一区二区三区| 国产欧美一区二区精品性色 | 狠狠色狠狠色合久久伊人| 中文一区一区三区高中清不卡| 亚洲婷婷国产精品电影人久久| 久久蜜桃一区二区| 日韩av午夜在线观看| 中文字幕成人av| 在线成人小视频| 99re热视频精品| 国产一区二区三区免费播放| 91免费看视频| 韩国成人精品a∨在线观看| 一级精品视频在线观看宜春院 | 久久久国产精华| 在线不卡中文字幕| 色久综合一二码| 91丨九色丨黑人外教| 国产一区激情在线| 日韩精品一二三| 亚洲成av人片一区二区| 亚洲人成网站影音先锋播放| 国产午夜精品一区二区| 欧美一区二区高清| 3d动漫精品啪啪一区二区竹菊| 91福利视频久久久久| 一本大道久久a久久精品综合| 国产精品99久久久久| 久久成人精品无人区| 丝袜亚洲另类丝袜在线| 亚洲小少妇裸体bbw| 一区二区日韩电影| 亚洲男人的天堂在线aⅴ视频| 国产精品成人免费在线| 国产精品福利一区二区| 国产精品美女久久久久久| 欧美国产欧美综合| 国产无人区一区二区三区| 久久午夜老司机| 欧美韩国日本不卡| 国产精品女主播av| 亚洲欧美中日韩| 亚洲手机成人高清视频| 一区二区三区在线视频免费| 成人欧美一区二区三区在线播放| 亚洲欧美综合色| 依依成人综合视频| 亚洲国产欧美在线| 奇米精品一区二区三区四区| 玖玖九九国产精品| 国产成人高清视频| gogo大胆日本视频一区| 91女神在线视频| 精品视频一区二区不卡| 91精品国产91热久久久做人人| 欧美va在线播放| 亚洲国产岛国毛片在线| 亚洲精品精品亚洲| 蜜臀av性久久久久蜜臀av麻豆| 国产一区二区三区观看| 99久精品国产| 91精品国产综合久久久蜜臀粉嫩| 日韩一卡二卡三卡四卡| 欧美激情在线观看视频免费| 亚洲视频中文字幕| 美女视频一区二区三区| 高清不卡一区二区| 欧美日韩中文精品| 国产亚洲婷婷免费| 亚洲一区二区三区视频在线播放| 另类小说欧美激情| 成人av动漫在线| 日韩一级片在线播放| 国产精品久久综合| 日韩成人伦理电影在线观看| 国产成人在线视频网址| 欧美色欧美亚洲另类二区| 久久久精品国产99久久精品芒果 | 欧美成人乱码一区二区三区| 国产精品乱码一区二区三区软件 | 国产日韩综合av| 亚洲线精品一区二区三区八戒| 国产一区二区三区蝌蚪| 欧美日韩午夜精品|