-3

我有一个矩阵 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]。有人知道我该如何解决吗?

4

1 回答 1

2

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

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

于 2013-07-30T21:45:33.760 回答