Создание матрицы смежности из массива ячеек - PullRequest
2 голосов
/ 18 апреля 2019

Я собираюсь создать матрицу смежности из массива ячеек, но столкнулся с двумя основными проблемами:

  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 Ответ

4 голосов
/ 18 апреля 2019

Есть много способов улучшить ваш код, но вы видите конкретную ошибку, потому что вы хотите D=elm(1,j); вместо D=elm(i,j);. Обратите внимание на 1 вместо i.

Несколько более эффективным подходом было бы сделать,

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

Как и в вашем коде, предполагается, что в Al нет пустых элементов.

...