【问题标题】:Creating an adjacency matrix from a cell array从元胞数组创建邻接矩阵
【发布时间】:2019-09-09 05:01:29
【问题描述】:

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

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

  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.:代码是构建邻接矩阵以表示图像中的超像素邻接的程序的一部分。可能有一个特定的解决方案!

【问题讨论】:

  • 我不明白...here 你得到了创建邻接矩阵的代码。 glcms 在该代码中是一个邻接矩阵。您需要做的就是Adjm = glcms,您就完成了。为什么你需要做这一切?
  • 另外,“我不知道如何访问元胞数组的元素;所以使用了临时方法。”您正在索引Al{i},这不是临时方法,这是获取单元格数组中单元格内容的正常且正确的方法。
  • @CrisLuengo,天哪!,我忘了。我正在寻找一种方法,例如提交的答案。顺便说一句,谢谢你的提醒。

标签: matlab image-processing matrix image-segmentation


【解决方案1】:

有很多方法可以使您的代码变得更好,但您看到的具体错误是因为您想要D=elm(1,j); 而不是D=elm(i,j);。注意1 而不是i

一种更有效的方法是这样做,

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-25
    • 1970-01-01
    相关资源
    最近更新 更多