Цель должна быть плотным двойным массивом индексов узлов. Как решить?

Я пытаюсь построить сетевой график с данными о смежности слов. Но я получаю ошибку "Цель должна быть плотным двойным массивом индексов узлов". Ниже приведен мой код:

fileName = 'adjnoun.gml';
inputfile = fopen(fileName);
A=[];

l=0;
k=1;
while 1

    % Get a line from the input file
    tline = fgetl(inputfile);

    % Quit if end of file
    if ~ischar(tline)
        break
    end

    nums = regexp(tline,'\d+','match'); %get number from string
    if length(nums)
        if l==1
            l=0;
            A(k,2)=str2num(nums{1});
            k=k+1;
            continue;
        end
        A(k,1)=str2num(nums{1});
        l=1;
    else
        l=0;
        continue;
    end
end
A= sort(A);
g = graph(A(:,1),A(:,2));

A - двойная матрица 425X2. Когда я пытаюсь создать график g = graph(A(:,1),A(:,2))Кидает ошибку.

1 ответ

Решение

Matlab-х graph(s, t) Функция отобразит эту ошибку, если у вас есть 0 в исходном или целевом массивах. Другими словами, если A(:, 2) содержит любые нули, Matlab потерпит неудачу с отображаемой ошибкой. Вы могли бы:

я. Добавьте "1" ко всем вашим значениям с помощью: A=A+1

II. Измените исходный график, чтобы получить вывод.gml без нулей.

Другие вопросы по тегам