主要内容

图表和矩阵

这个例子展示了稀疏矩阵的一个应用,并解释了图和矩阵之间的关系。

图是一组节点之间具有指定的连接或边。图表有多种形状和大小。其中一个例子是巴克敏斯特富勒圆顶的连通性图,它也是足球或碳-60分子的形状。

在MATLAB®中,您可以使用巴基函数生成圆顶测地线的图形。

[B、V] =巴基;图G = (B);p =情节(G);轴平等的

图中包含一个axes对象。axes对象包含一个graphplot类型的对象。

您还可以为节点指定坐标,以更改图形的显示。

p.XData = V (: 1);p.YData = V (:, 2);

图中包含一个axes对象。axes对象包含一个graphplot类型的对象。

巴基函数可用于创建图,因为它返回邻接矩阵。邻接矩阵是表示图中节点和边的一种方法。

为了构造图的邻接矩阵,节点编号为1到n,如果节点i与节点j相连,则n × n矩阵的每个元素(i,j)设为1,否则设为0。因此,对于无向图,邻接矩阵是对称的,但对于有向图则不一定如此。

例如,这是一个简单的图和它相关的邻接矩阵。

定义一个矩阵a。A = [0 1 1 0;1 0 0 1;1 0 0 1;0 1 1 0];画一幅图显示连接的节点。cla次要情节(1、2、1);gplot(A,[0 1;1 1;0 0;1 0],“。”);Text ([-0.2, 1.2 -0.2, 1.2],[1.2, 1.2, -.]2。2)(“1234”)”,...“HorizontalAlignment”“中心”轴([-1 2 -1 2],“关闭”画一幅图显示邻接矩阵。次要情节(1、2、2);xtemp = repmat(1:4, 1、4);ytemp =重塑(repmat(1:4 4 1), 16日1)';文本(xtemp闲置,ytemp闲置,char (' 0 '+ (:)),“HorizontalAlignment”“中心”);线([。25 0 0 .25 NaN 3.75 4 4 3.75],[0 0 4 4 NaN 0 0 4])轴

稀疏矩阵对于表示非常大的图特别有帮助。这是因为每个节点通常只与其他几个节点相连。因此,对于大型图,邻接矩阵中非零项的密度通常相对较小。bucky ball邻接矩阵就是一个很好的例子,因为它是一个只有180个非零元素的60 × 60对称稀疏矩阵。这个矩阵的密度只有5%

由于邻接矩阵定义了图,您可以使用邻接矩阵中条目的子集来绘制巴基球的一部分。

使用邻接函数为图创建一个新的邻接矩阵。通过索引到邻接矩阵来显示巴基球的一个半球上的节点,以创建一个新的、更小的图。

图A =邻接(G);H =图((1:30,1:30));h =情节(h);

图中包含一个axes对象。axes对象包含一个graphplot类型的对象。

要形象化这个半球的邻接矩阵,使用间谍函数绘制邻接矩阵中非零元素的轮廓。

注意,矩阵是对称的,因为如果节点i连接到节点j,那么节点j连接到节点i。

间谍((1:30,1:30)标题(“巴基球邻接矩阵的左上角”

图中包含一个axes对象。标题为Bucky Ball Adjacency Matrix左上角的axes对象包含一个类型为line的对象。

最后,这里有一个间谍整个巴基球邻接矩阵的图。

间谍(A)标题(“巴基球邻接矩阵”

图中包含一个axes对象。标题为Bucky Ball Adjacency Matrix的axes对象包含一个类型为line的对象。

另请参阅

|

Baidu
map