在matlab中从矩阵绘制网络或图形

hap*_*yme 3 matlab graph matrix

如何借助转换矩阵绘制网络的一系列帧?我有一个表示图形的矩阵.矩阵随着迭代而变化.任何人都可以让我了解我可以使用哪些功能来创建网络系列?

      original=[0.06    0.57    0.37    0       0;
                0.57    0.06    0.37    0       0;
                0.37    0.57    0.03    0.03    0;
                0       0       0.03    0.13    0.84;
                0       0       0       0.84    0.16];
Run Code Online (Sandbox Code Playgroud)

假设上面是有问题的矩阵.那么图应该是

图片

cjh*_*cjh 7

这个问题关系到这个早些时候查询这一个.但这是针对您情况的答案.

给定加权邻接矩阵:

 original =    [0.06    0.57    0.37    0       0;
                0.57    0.06    0.37    0       0;
                0.37    0.57    0.03    0.03    0;
                0       0       0.03    0.13    0.84;
                0       0       0       0.84    0.16];
Run Code Online (Sandbox Code Playgroud)

您可以先定义网络中的节点数量:

N = size(original,1);
Run Code Online (Sandbox Code Playgroud)

然后在圆周上有一组相应的坐标:

coords = [cos(2*pi*(1:N)/N); sin(2*pi*(1:N)/N)]';
Run Code Online (Sandbox Code Playgroud)

然后你可以使用gplot以下方法绘制图形:

gplot(original, coords)
Run Code Online (Sandbox Code Playgroud)

并使用text以下标记顶点:

text(coords(:,1) - 0.1, coords(:,2) + 0.1, num2str((1:N)'), 'FontSize', 14)
Run Code Online (Sandbox Code Playgroud)

请注意,该gplot功能不会通过连接强度对线进行加权; 矩阵元素(i,j)被视为二进制,表示节点i和j之间不存在或存在链接.