如何存储从迭代中获得的变化变量,以便在将来的迭代中使用它?

时间:2014-10-02 16:05:30

标签: matlab iteration constants

一旦满足某些条件,我试图在迭代中存储变量。存储的变量将在将来的迭代中使用,并在不再满足条件时重置。 例如:

  • 我希望保持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)

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

我不确定这是否符合确切需求,但这是尝试。

我介绍了两个变量freezelastval。我使用冻结来表示使用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