从单元格数组创建邻接矩阵

时间:2019-04-18 20:10:48

标签: matlab image-processing matrix image-segmentation

我要从一个单元格数组创建一个邻接矩阵,但是面临两个主要问题:

  1. 我不知道如何访问单元阵列的元素;因此使用了专门的方法。

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

单元格数组如下图: screen shot of MATLAB's variable editor showing the contents of 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

代码产生此错误:

screen shot of the MATLAB command window showing an error message

,输出如下: yet another screen shot showing defined variables

P.S .:该代码是构造邻接矩阵以表示图像内超像素邻接的程序的一部分。可能有一个特定的解决方案!

1 个答案:

答案 0 :(得分:4)

有很多方法可以改善代码,但您看到的特定错误是因为您想要D=elm(1,j);而不是D=elm(i,j);。请注意,1而不是i

一种更有效的方法,

for i=1:numel(Al)
    Adjm(i,Al{i})=1;
end

与您的代码一样,这假设Al中没有空元素。