MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   资料存档 (https://www.labfans.com/bbs/forumdisplay.php?f=72)
-   -   在MATLAB中构造邻接矩阵 (https://www.labfans.com/bbs/showthread.php?t=23709)

poster 2019-12-10 20:48

在MATLAB中构造邻接矩阵
 
考虑布置在N×M大小的网格上的一组点。我试图建立邻接矩阵,以便相邻点连接。

例如,在带有图形的3x3网格中:

1-2-3 | | | 4-5-6 | | | 7-8-9 我们应该有相应的邻接矩阵:

+---+------------------------------------------------------+ | | 1 2 3 4 5 6 7 8 9 | +---+------------------------------------------------------+ | 1 | 0 1 0 1 0 0 0 0 0 | | 2 | 1 0 1 0 1 0 0 0 0 | | 3 | 0 1 0 0 0 1 0 0 0 | | 4 | 1 0 0 0 1 0 1 0 0 | | 5 | 0 1 0 1 0 1 0 1 0 | | 6 | 0 0 1 0 1 0 0 0 1 | | 7 | 0 0 0 1 0 0 0 1 0 | | 8 | 0 0 0 0 1 0 1 0 1 | | 9 | 0 0 0 0 0 1 0 1 0 | +---+------------------------------------------------------+ 另外,该解决方案应适用于4和8连接的相邻点,即:

oooo o X o vs. o X o oooo 这是我到目前为止的代码:

N = 3; M = 3; adj = zeros(N*M); for i=1:N for j=1:M k = sub2ind([NM],i,j); if i>1 ii=i-1; jj=j; adj(k,sub2ind([NM],ii,jj)) = 1; end if i1 ii=i; jj=j-1; adj(k,sub2ind([NM],ii,jj)) = 1; end if j


所有时间均为北京时间。现在的时间是 22:45

Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.