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

📄 blin_w2p.m

📁 利用加速随机游走计算初始点确定的分类算法
💻 M
字号:
function P = BLin_W2P(W,flg)


%Setup Transition Matrix for random walk
%The diagnal of W is already set zero

%size(W)
W = (triu(W,1) + tril(W,-1));
if flg==0%row normalization and then transport
    D0 = (sparse(diag(sum(W,2))));
    [m,n] = size(W);
    for i=1:m
        if D0(i,i)>0
            D0(i,i) = 1/D0(i,i);
        end
    end
    %row normalization
    P = D0 * W;
    P = P';
elseif flg==-1 %row normalization and NO transport
    D0 = (sparse(diag(sum(W,2))));
    [m,n] = size(W);
    for i=1:m
        if D0(i,i)>0
            D0(i,i) = 1/D0(i,i);
        end
    end
    %row normalization
    P = D0 * W;
else


D0 = sum(W);
D0 = max(D0,0.00000000001);
W = sparse(W);

if min(D0)>0
    if flg==1%Graph Laplacian
        D = sparse(diag(D0.^(-0.5)));
        P = D * W * D;
    elseif flg==2%normalize row 1/2
        
        D1 = sparse(diag(sum(W).^0.5));%colum sum
        D2 = sparse(diag(sum(W,2).^(0.5)));%row sum
        W2 = D2 *  W * D1;
        
        D0 = inv(sparse(diag(sum(W2))));
        P = W2 * D0;
        
    elseif flg==3%normalize row -1/2      
        D1 = sparse(diag(sum(W).^(-0.5)));%colum sum
        D2 = sparse(diag(sum(W,2).^(-0.5)));%row sum
        P = D2 *  W * D1;
        
        %D0 = inv(sparse(diag(sum(W2))));
        %P = W2 * D0;
        
        %D2 = sparse(diag(sum(W,2).^(-1)));%row sum
        %W2 = D2 * W ;
        
        %D0 = inv(sparse(diag(sum(W2))));
        %P = W2 * D0;
    elseif flg==4    
        %Dc = sparse(diag(sum(W).^(-1)));%sum of column
        D0 = inv(sparse(diag(sum(W))));
        P = W * D0;
    elseif flg>=5&flg<=6% row normalized by d^
        coff = flg-5;
        D1 = sparse(diag(sum(W).^(-coff)));%colum sum
        D2 = sparse(diag(sum(W,2).^(-coff)));%row sum
        W2 = D2 *  W * D1;
        
        D0 = inv(sparse(diag(sum(W2))));
        P = W2 * D0;
    else%log(D+1)
        D2 = sum(W,2);%row sum
        [m,n] = size(W);
        for i=1:m
            for j=1:n
                W2(i,j) = W(i,j) /(log(D2(i)+1));
            end
        end
        D0 = inv(sparse(diag(sum(W2))));
        P = W2 * D0;
    end       
    
else%row by row
end
end
    

⌨️ 快捷键说明

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