一旦满足某些条件,我试图在迭代中存储变量。存储的变量将在将来的迭代中使用,并在不再满足条件时重置。 例如:
我希望保持m(k,i)
不变,以使i
次迭代的k+1
次迭代相同,即:m(k+1,i)= m(k,i)
和{{1}并且y(k,i)
会相应更改,直到不符合x(k,i)
条件。然后,如果再次满足条件,if
重置并重新启动序列,但使用CURRENT m(k,i)
和y(k,i)
获取另一个常量x(k,i)
。
m(k,i)
非常感谢任何帮助!
答案 0 :(得分:1)
我不确定这是否符合确切需求,但这是尝试。
我介绍了两个变量freeze
和lastval
。我使用冻结来表示使用m(k,i)
的先前值而不是重新计算它。 lastval
只是存储最近计算的重用值。
freeze = false;
for k=1:200
for i=1:49
if d_p(i)<rp
if not(freeze)
m(k,i)= y(k,i)/x(k,i); %given previous values of x,y
freeze = true;
lastval = m(k,i);
else
m(k,i) = lastval;
end
u1(i,k)= x(k,i)+cosd(a_s(i,k))/m(k,i) + sind(a_s(i,k)); %matrix a_s is known.
u2(i,k)= -4*(y(k,i)+x(k,i)/m(k,i)) -3*(theta_s(i,k)-90);
else
freeze = false;
u1(i,k)=0;
u2(i,k)=0;
end
end
x(k+1,:)=x(k,:)+u1(:,k).*cosd(a_s(:,k))';
y(k+1,:)=y(k,:)+u2(:,k).*sind(a_s(:,k))';
end