【发布时间】:2014-10-02 16:05:29
【问题描述】:
一旦满足某些条件,我就会尝试在迭代中存储一个变量。存储的变量将在以后的迭代中使用,并在不再满足条件时重置。 例如:
-
我想保持
m(k,i)constant 以便k+1th 迭代的ith 迭代是相同的,即:m(k+1,i)= m(k,i)和y(k,i)和x(k,i)保持相应的变化,直到if不满足条件。然后,m(k,i)重置并在再次满足条件时重新启动序列,但使用 CURRENTy(k,i)和x(k,i)获取另一个常量m(k,i)。for k=1:200 for i=1:49 if d_p(i)<rp m(k,i)= y(k,i)/x(k,i); %given previous values of x,y const = m(k,i); u1(i,k)= x(k,i)+cosd(a_s(i,k))/const + sind(a_s(i,k)); %matrix a_s is known. u2(i,k)= -4*(y(k,i)+x(k,i)/const) -3*(theta_s(i,k)-90); else 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
任何帮助将不胜感激!
【问题讨论】:
-
似乎您应该使用
m(i)而不是m(k,i),这样k的下一次迭代将重用m的相同向量(直到您更改某些元素) -
谢谢@BenVoigt。如果我使用
m(i),下一次迭代不会为m(i)重新分配一个新值,因为y(k,i)和x(k,i)在每次迭代k时都会发生变化? -
如果你需要 m(k,i) 而不是 m(i),你能在第一个 for 循环中放一个
(if k > 1) m(k,:) = m(k-1,:)吗? -
@Trogdor @BenVoigt 刚刚对
x(k+1,:)和y(k+1,:)的位置进行了编辑。他们应该在内部 for 循环之后,道歉。 -
@dee:只有满足您的条件,它才会分配一个新值。否则,上一次迭代的值将保留在向量中。
标签: matlab iteration constants