matlab尝试访问rel(9508,4);索引越界,因为size(rel)= [9507,8]

时间:2013-07-30 21:36:41

标签: matlab for-loop

我有一个矩阵rel nx8和一个第二个矩阵mx3。我想检查矩阵rel的第3列是否包含8.如果是,我转到第二个条件:如果矩阵rel的第3列等于矩阵A的第2列,则转到第三个条件并创建另外两列矩阵A中包含矩阵rel的第7列和第8列的元素。

n=size(rel)
m=length(A)
 for i=1:n
   for k=1:m
        if rel(i,4)==8
             if rel(i,3)==A(k,2)
                 if (rel(i,2)== A(k,1)) || (rel(i,1)== A(k,1))
                   A(k,4)=rel(i,7);
                   A(k,5)=rel(i,8);
                 end
              end
         end
      i=i+1
   end

但是我收到此消息错误:尝试访问rel(9508,4);索引越界,因为size(rel)= [9507,8]。 有谁知道我该怎么办?

1 个答案:

答案 0 :(得分:2)

这是因为您在i for循环中迭代变量k。因此,当您到达k循环时,您正在将原始i从第一个循环加速到i+m。这是您的错误来源,因为i+m变得大于n

要看到这一点,请删除if语句,将nm设置为一些合理的值(如2和3),然后运行循环,跟踪{{1 }}