【发布时间】:2015-04-30 00:17:47
【问题描述】:
给定 n = 256 个节点的正方形表示,我希望将其显示在一个名为 neighbour{i} 的变量中,该变量返回每个节点的所有邻居。例如正方形中的节点数为 n= 256,所以我想使用 matlab 获取单元格数组中每个节点的邻居
for i=1:N
neighbour{i}=[neighbour{i} j]
end
![%the code%
N = 16; M = 16; %# grid size
CONNECTED = 8; %# 4-/8- connected points
%# which distance function
if CONNECTED == 4, distFunc = 'cityblock';
elseif CONNECTED == 8, distFunc = 'chebychev'; end
%# compute adjacency matrix
\[X Y\] = meshgrid(1:N,1:M);
X = X(:); Y = Y(:);
adj = squareform( pdist(\[X Y\], distFunc) == 1 );
display(adj);
%# plot connected points on grid
\[xx yy\] = gplot(adj, \[X Y\]);
plot(xx, yy, 'ks-', 'MarkerFaceColor','r')
axis(\[0 N+1 0 M+1\])
\[X Y\] = meshgrid(1:N,1:M);
X = reshape(X',\[\],1) + 0.1; Y = reshape(Y',\[\],1) + 0.1;
text(X, Y(end:-1:1), cellstr(num2str((1:N*M)')) )
linked_node=cell(N,1);
% the most important step
for X=1:N
for Y=1:M
if ((X~=Y) &&(squareform( pdist(\[X Y\], distFunc) == 1)))
linked_node{X}= \[linked_node{X} Y\];
end
end
end][1]
【问题讨论】:
-
您的问题没有那么明确。如果我只是阅读您的问题,我会建议
convolution。请参阅this answer 了解如何计算邻居数。但是,您的代码似乎考虑的远不止这些,而不仅仅是计算邻居。你能澄清一下你所说的邻居是什么意思吗? -
deatr kkuilla;我的目标是为每个节点创建一个包含一组邻居的单元格数组,例如:如果节点 1 的邻居是:2 ,5 ,7 ,18 则 neighbours{1}= {2,5,7,18 }。 aformentionned 方形图是 n=256 个节点的图,因此我需要获取并显示:neighbours{1}= {2,5,7,18} neighbours{2}= {1,26,4,18}。 ......直到邻居{256}= {................}。 % 如果两个节点是链接的,则它们是邻居
-
你有邻居名单吗?
-
这是我需要构建的
-
如何知道两个节点是否链接?