首先输出' find_nbrs'是一个行向量。在评估以下代码时,我在第13行得到以下错误(下标索引必须是实数正整数或逻辑。)
function [ N ] = componentt( A,m,found_list )
found_list=[m];
for i = find_nbrs(m,A)
found_list(length(found_list)+1)=i;
end
v=[];
for j=found_list
v=[v find_nbrs(j,A)];
end
v=unique(v);
while length(v)~= length(found_list)
found_list = [found_list v(end)];
for k=v
a=find_nbrs(k,A);
while ~ismember(a,found_list)
v(length(v)+1)=a;
end
end
end
N=sort(found_list); %The entries of the output vector are in increasing order.
end
答案 0 :(得分:1)
有两个可能的原因
下标索引必须是实数正整数或逻辑。
行引发错误
found_list = [found_list v(end)];
首先,你以某种方式创建了一个名为end
的变量。但是既然你发布了一个应该是作用域的整个函数,我不会认为是这种情况。
第二个是v
是一个空矩阵。在这种情况下,end
是什么?它可能是0
。它绝对不是一个正整数。试试这个
v = [];
v(end)
您将收到错误。
因此,当您点击该行时,您需要问问自己v
是否应该为空。如果是,则需要将其包装在if
语句中。像
if ~isempty(v)
found_list = [found_list v(end)];
end