我有两个列向量'a'和'b'(例如如下)
a_o = [4 5 6]'
b_o = [1 8 4]'
现在我想创建一个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个数据点为“no”。迭代'是20。
我需要建议,因为我的实际要求并不像上面所说的那么简单。它包含非常大的数据集。也可以采用不同的方法。
答案 0 :(得分:1)
事实上这很简单,但我拒绝制作这么多变数,而只是制作一些更大的变量:
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
这应该大概做你想要的,不应该太难调整。