如果在Matlab中的FOR循环内部不起作用

时间:2013-07-29 15:04:22

标签: matlab if-statement for-loop

我在下面有这个功能,但if循环内的for语句不起作用。我尝试<=代替<round(),但他们没有工作。

function points1=tracker(count1,points1,u,v,I2)

for j=1:count1

   if  (points1(1,j) < size(u,1))&&(points1(2,j) < size(u,2))

       points1(1,j)= points1(1,j)+v(points1(1,j),points1(2,j));
       points1(2,j)= points1(2,j)+u(points1(1,j),points1(2,j));
       I2(round(points1(1,j)),round(points1(2,j)))=255;

   else

       points1(:,j)=[];
       count1=count1-1;
       j=j-1;

   end

end

    figure, imshow(I2)

end

1 个答案:

答案 0 :(得分:8)

您正在尝试从循环(您的for行)中更改j循环j=j-1的增量。你不能这样做。 for状态的documentation

  

避免为循环体内的索引变量赋值。 for语句会覆盖循环中对索引所做的任何更改。

您需要使用while循环,或者使用中间变量找到另一种方法来执行您需要的操作。