变量'cc'似乎在每次循环迭代 MATLAB 上都会改变大小



我有使用matlab的tarjan程序的代码源,当我运行prog时会出现此错误,我该如何修复

function [C, S, idx, index, index_accessible] = strongconnect(C, G, v, S, idx, index,       index_accessible)
index(v) = idx;
index_accessible(v) = idx;
idx = idx+1;
S = push(S,v); %ajouter le sommet courant à la pile
% Liste les sommets adjacents au sommet courant
n = voisin(G,v);
% Parcours récursif
for i = 1:length(n)
    if(index(n(i)) == 0)
        [C, S, idx, index, index_accessible] = strongconnect(C, G, n(i), S, idx, index,  index_accessible);
        index_accessible(v) = min(index_accessible(v), index_accessible(n(i)));
    elseif (~isempty(find(S == n(i), 1)))
        index_accessible(v) = min(index_accessible(v), index(n(i)));
    end
end
% Le sommet est une racine, on calcule la composante fortement connexe associée
if(index_accessible(v) == index(v))
    cc = []; %composante fortement connexe issue du sommet
    if(~isempty(S))
        [tmp, S] = pop(S);
        cc = [cc tmp];
    end
    while(~isempty(S) && tmp ~= v)
        [tmp, S] = pop(S);
        ***cc*** = [cc tmp];
    end
    if(~isempty(cc))
        % Les composantes connexes n'ont pas toutes
        % la même longueur. On complète donc la ligne
        % avec des 0.
        C = [C ; cc zeros(1,size(G,1) - length(cc))];
    end
end
end

问题是星星之间的CC

代码中没有错误。输入是图矩阵,我使用了一个随机生成的矩阵:

G=randi(10,20,20)==1;

现在调用函数:

C=tarjan(G);

C的每一行都包含一个组件。

如果这没有回答您的问题,请对其进行更新,包括错误描述和输入数据。

最新更新