www.pudn.com > get_edge_degree.rar > get_edge_degree.m


function Edge_Degree=get_edge_degree(Nodes,flag) 
%get edge degree according to following defination: 
%1.k(v,w)=kv*kw 
%2.k(v,w)=kv+kw 
%3.k(v,w)=min(kv,kw) 
%4.k(v,w)=max(kv,kw) 
%5.k(v,w)=1/kv*kw 
%6.k(v,w)=1/(kv+kw) 
%7.k(v,w)=1/min(kv,kw) 
%8.k(v,w)=1/max(kv,kw) 
% 
%Input: Nodes -- N*N adjacent matrix 
%       flag -- according to different edge-degree defination 
%Output:Edge_Degree -- N*N matrix 
 
 
N=length(Nodes);%Modifed by rock on 06/02.27 
NodeDegree=zeros(N,1); 
 
for i=1:N 
    Nodes(i,i)=0; 
    Degree(i)=nnz(Nodes(i,:)); 
end 
 
[Row,Col,Weight]=find(Nodes); 
M=length(Row); 
 
for i=1:M 
    if flag==1 
        Weight(i)=Degree(Row(i))*Degree(Col(i)); 
    elseif flag==2 
        Weight(i)=Degree(Row(i))+Degree(Col(i)); 
    elseif flag==3 
        Weight(i)=min(Degree(Row(i)),Degree(Col(i))); 
    elseif flag==4 
        Weight(i)=max(Degree(Row(i)),Degree(Col(i))); 
    elseif flag==5 
        Weight(i)=1/(Degree(Row(i))*Degree(Col(i))); 
    elseif flag==6 
        Weight(i)=1/(Degree(Row(i))+Degree(Col(i))); 
    elseif flag==7 
        Weight(i)=1/min(Degree(Row(i)),Degree(Col(i))); 
    elseif flag==8 
        Weight(i)=1/max(Degree(Row(i)),Degree(Col(i))); 
    end 
end 
 
Edge_Degree=spconvert([Row,Col,Weight]); 
 
return