从元胞数组创建邻接矩阵
Creating an adjacency matrix from a cell array
我打算从元胞数组创建邻接矩阵,但面临两个主要问题:
我不知道如何访问元胞数组的元素;所以使用了一种临时方法。
(也是最重要的)代码产生错误,部分结果也很奇怪!
元胞数组如下图:
代码如下:
for i=1:N
L=size(Al{i});
Len=L(1,2);
for j=1:Len
elm=Al{i};
D=elm(i,j);
Adjm(i,D)=1;
end
end
代码产生此错误:
输出如下:
P.S.: 该代码是构建邻接矩阵以表示图像内超像素邻接的程序的一部分。可能有一个特定的解决方案!
有很多方法可以让您的代码变得更好,但您看到的特定错误是因为您想要 D=elm(1,j);
而不是 D=elm(i,j);
。注意 1
而不是 i
.
一种更有效的方法是,
for i=1:numel(Al)
Adjm(i,Al{i})=1;
end
与您的代码一样,这假定 Al
中没有空元素。
我打算从元胞数组创建邻接矩阵,但面临两个主要问题:
我不知道如何访问元胞数组的元素;所以使用了一种临时方法。
(也是最重要的)代码产生错误,部分结果也很奇怪!
元胞数组如下图:
代码如下:
for i=1:N
L=size(Al{i});
Len=L(1,2);
for j=1:Len
elm=Al{i};
D=elm(i,j);
Adjm(i,D)=1;
end
end
代码产生此错误:
输出如下:
P.S.: 该代码是构建邻接矩阵以表示图像内超像素邻接的程序的一部分。可能有一个特定的解决方案!
有很多方法可以让您的代码变得更好,但您看到的特定错误是因为您想要 D=elm(1,j);
而不是 D=elm(i,j);
。注意 1
而不是 i
.
一种更有效的方法是,
for i=1:numel(Al)
Adjm(i,Al{i})=1;
end
与您的代码一样,这假定 Al
中没有空元素。