Matlab下标索引错误

时间:2016-01-27 06:37:54

标签: matlab

首先输出' 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

1 个答案:

答案 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