我在下面有这个功能,但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
答案 0 :(得分:8)
您正在尝试从循环(您的for
行)中更改j
循环j=j-1
的增量。你不能这样做。 for
状态的documentation:
避免为循环体内的索引变量赋值。 for语句会覆盖循环中对索引所做的任何更改。
您需要使用while
循环,或者使用中间变量找到另一种方法来执行您需要的操作。