从元胞数组创建邻接矩阵

Creating an adjacency matrix from a cell array

我打算从元胞数组创建邻接矩阵,但面临两个主要问题:

  1. 我不知道如何访问元胞数组的元素;所以使用了一种临时方法。

  2. (也是最重要的)代码产生错误,部分结果也很奇怪!

元胞数组如下图:

代码如下:

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 中没有空元素。