主要内容

图和矩阵

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

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

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

[B,V] =结实的;G =图(B);p = plot(G);轴平等的

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

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

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

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

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

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

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

定义矩阵a。A = [0 1 1 0;1 0 0 1;1 0 0 1;0 1 10 0];绘制显示连接节点的图片。cla次要情节(1、2、1);gplot(A,[0 1;1 1;0 0; 10 0],“。”);文本([-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 4])轴

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

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

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

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

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

要可视化此半球的邻接矩阵,请使用间谍函数绘制邻接矩阵中非零元素的轮廓。

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

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

图中包含一个轴对象。标题为“巴基球邻接矩阵左上角”的axes对象包含一个类型为line的对象。

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

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

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

另请参阅

|