1

我在下面有这个函数,但是循环if内的语句for不起作用。我试过<=而不是<and also 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
4

1 回答 1

8

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

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

您将需要使用while循环,或者使用中间变量找到另一种方法来做您需要的事情。

于 2013-07-29T15:14:27.417 回答