• MATLAB 矩阵生成无向网络图


      寝室有一个是做网络的,需要把矩阵变为网络图使其形象一点,所以我在这里就写了这样一个函数。

      功能是将邻接矩阵或关联矩阵变为网络图,不过我这里只能转换为无向图,有向图的箭头我还需要在研究一下,似乎有annotation函数可以调用。

     1 %函数名netplot
     2 %使用方法输入请help netplot
     3 %无返回值%函数只能处理无向图
     4 %作者:tiandsp
     5 %最后修改:2012.12.26
     6 function netplot(A,flag)
     7     %调用方法输入netplot(A,flag),无返回值
     8     %A为邻接矩阵或关联矩阵
     9     %flag=1时处理邻接矩阵
    10     %flag=2时处理关联矩阵
    11     %函数只能处理无向图
    12     if flag==1      %邻接矩阵表示无向图
    13         ND_netplot(A);
    14         return;
    15     end
    16     
    17     if flag==2      %关联矩阵表示无向图
    18         [m n]=size(A);      %关联矩阵变邻接矩阵
    19         W=zeros(m,m);
    20         for i=1:n
    21             a=find(A(:,i)~=0);
    22             W(a(1),a(2))=1;
    23             W(a(2),a(1))=1;
    24         end
    25         ND_netplot(W);
    26         return;
    27     end
    28            
    29     function ND_netplot(A)
    30         [n n]=size(A);
    31         w=floor(sqrt(n));       
    32         h=floor(n/w);        
    33         x=[];
    34         y=[];
    35         for i=1:h           %使产生的随机点有其范围,使显示分布的更广
    36             for j=1:w
    37                 x=[x 10*rand(1)+(j-1)*10];
    38                 y=[y 10*rand(1)+(i-1)*10];
    39             end
    40         end
    41         ed=n-h*w;
    42         for i=1:ed
    43            x=[x 10*rand(1)+(i-1)*10]; 
    44            y=[y 10*rand(1)+h*10];
    45         end
    46         plot(x,y,'r*');    
    47         
    48         title('网络拓扑图'); 
    49         for i=1:n
    50             for j=i:n
    51                 if A(i,j)~=0
    52                     c=num2str(A(i,j));                      %将A中的权值转化为字符型              
    53                     text((x(i)+x(j))/2,(y(i)+y(j))/2,c,'Fontsize',10);  %显示边的权值
    54                     line([x(i) x(j)],[y(i) y(j)]);      %连线
    55                 end
    56                 text(x(i),y(i),num2str(i),'Fontsize',14,'color','r');   %显示点的序号            
    57                 hold on;
    58             end
    59         end  
    60     end
    61     
    62 end

    调用方法里面都写了,我就不多说了。

    下面是一个节点为10的图(搞图像的我果然还是喜欢传图啊):

  • 相关阅读:
    Android开发-MediaRecorder使用
    ScrollView嵌套ListView只显示一行的解决方法
    Android 通知栏Notification的整合 全面学习 (一个DEMO让你完全了解它)
    Dialog向Activity传递数据
    Android WebView使用深入浅出
    Android四大基本组件介绍与生命周期
    Java泛型的应用
    Java final关键字特点
    Java static关键字特点
    Java匿名内部类
  • 原文地址:https://www.cnblogs.com/ybqjymy/p/13646388.html
Copyright © 2020-2023  润新知