我知道方形二进制矩阵可以转换为图形。例如在下面的matlab矩阵中使用gplot可以转换为图形
0 1 1
1 0 0
0 1 0
可以用图来表示
A->B, A->C, B->A,C->B
但我想知道是否有办法转换一个矩形矩阵
0 1
1 0
0 1
在matlab或任何其他语言中以某种方式绘制图表?
我的行和列也是不同的变量。
我知道方形二进制矩阵可以转换为图形。例如在下面的matlab矩阵中使用gplot可以转换为图形
0 1 1
1 0 0
0 1 0
可以用图来表示
A->B, A->C, B->A,C->B
但我想知道是否有办法转换一个矩形矩阵
0 1
1 0
0 1
在matlab或任何其他语言中以某种方式绘制图表?
我的行和列也是不同的变量。
如果您确实对Bipartite graph感兴趣,就像@Ante 建议的那样,您也可以巧妙地利用gplot
这里:
首先通过用零列填充矩形矩阵来创建一个方形邻接矩阵:
A = [0 1; 1 0; 0 1];
Asq = eye(sum(size(A)));
Asq(1:size(A, 1), end - size(A, 2) + 1:end) = A;
让我们决定行顶点在左侧,列顶点在右侧。现在为顶点创建一个坐标矩阵:
xy1 = [ones(size(A, 1), 1), (1:size(A, 1))']; % # Row vertices
xy2 = [2 * ones(size(A, 2), 1), (1:size(A, 2))']; % # Column vertices
绘制图形:
gplot(Asq, [xy1; xy2], '*-')
axis([0, 3, 0, size(A, 1) + 1])
这是你应该为你的例子得到的:
如果行和列的节点不同,则为二分图的邻接矩阵。