Matlab 用于环路自适应

Matlab 用于环路自适应,matlab,for-loop,plot,Matlab,For Loop,Plot,我有两个列向量'a'和'b'(例如,如下所示) 现在我想创建一个for循环,其中没有迭代可以定义为 for i=1:1:20 end 我想在循环中对a_o和相应b_o的每个值做如下表所示。它应该首先将“a_o”和“b_o”(在本例中,a-o1=4和b_o1=1)的第一个值作为循环中的值,并对i的20次迭代进行计算。如下表所示 a b c No. of iteration

我有两个列向量'a'和'b'(例如,如下所示)

现在我想创建一个for循环,其中没有迭代可以定义为

   for
      i=1:1:20   
   end 
我想在循环中对a_o和相应b_o的每个值做如下表所示。它应该首先将“a_o”和“b_o”(在本例中,a-o1=4和b_o1=1)的第一个值作为循环中的值,并对i的20次迭代进行计算。如下表所示

    a            b             c                     No. of iterations
   a1=a_o1      b1=b_o1       c1=a_o1xb_o1           1
   a2=a1+c1     b2=b1-c1      c2=a2xb2               2
   a3=a2+c2     b3=b2-c2      c3=a2xb2               3
   .            .             .                      .
   .            .             .                      .
   .            .             .                      .
   a20=a19+c19  b20=b19-c19   c20=a19xb19            20
在此之后,应取“a_o”和“b_o”的第二个值(在本例中,a-o1=5和b_o1=8),并重复上述步骤,如表中所述。“a_o”和“b_o”的其余部分也是如此。 同样,当循环完成时,需要一个图形,该图形将是y轴=‘a’和x轴=‘迭代次数’之间的x-y图。在这种情况下,我希望有三条曲线,因为a_o中有三个值,每条曲线有20个数据点,因为“迭代次数”是20


我需要建议,因为我的实际需求并不像上面所说的那么简单。它包含非常大的数据集。此外,还可以采用不同的方法。

事实上,这非常简单,但我拒绝使用这么多变量,我们只使用几个更大的变量:

n = 20;
a_o = [4 5 6]';
b_o = [1 8 4]';
c_o = a_o.*b_o; % You may want to do the regular multiplication

%Initialize your matrices
a = repmat(a_o,1,n);
b = repmat(b_o,1,n);
c = repmat(c_o,1,n);

for t = 2:n
  a(:,t) =  a(:,t-1)+c(:,t-1);
  b(:,t) =  b(:,t-1)-c(:,t-1);
  c(:,t) =  a(:,t).*b(:,t);
end

这应该可以大致满足您的需要,并且不太难调整。

您希望有人编写该循环还是提出建议,如何使其比使用简单的循环更快?@Sebastian:谢谢,如果您编写循环,这将非常有帮助,因为我不是循环方面的专家,很可能会出现一些错误。
n = 20;
a_o = [4 5 6]';
b_o = [1 8 4]';
c_o = a_o.*b_o; % You may want to do the regular multiplication

%Initialize your matrices
a = repmat(a_o,1,n);
b = repmat(b_o,1,n);
c = repmat(c_o,1,n);

for t = 2:n
  a(:,t) =  a(:,t-1)+c(:,t-1);
  b(:,t) =  b(:,t-1)-c(:,t-1);
  c(:,t) =  a(:,t).*b(:,t);
end