Octave扩展的基本for循环

时间:2015-09-22 15:59:28

标签: for-loop octave

出于某种原因,我无法在Octave中克服这个问题:

for i=1:n
  y(2:(i+1))=y(2:(i+1))-x(i)*y(1:i)
end;

如果我逐步分解(假设n = 3),那么循环不会像这样:

 i=1
y(2)=y(2)-x(1)*y(1)
 i=2
y(2)=y(2)-x(2)*y(1)
y(3)=y(3)-x(2)*y(2)
 i=3
y(2)=y(2)-x(3)*y(1)
y(3)=y(3)-x(3)*y(2)
y(4)=y(4)-x(3)*y(3)

嗯,我一定是错的,因为一步一步做循环的结果并不好,但对于我的生活,我无法弄清楚在哪里。有人可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

首先,请原谅我的样式,之前我从未在Stack Overflow中使用过矩阵/向量表示。无论如何,我希望这能让你了解它的内部运作方式:

x = [1,2,3] 
y = [1,0,0,0]

第1步:

第一个循环将执行:

y(2)=y(2)-x(1)*y(1)

这些只是标量值,y(2)= 0,x(1)= 1,y(1)= 1。 所以y(2)= 0-1 * 1 = -1,这意味着向量y中的第二个位置将变为-1。

导致y = [1,-1,0,0]

第2步:

下一个循环将执行

enter image description here

这里y(2,3)和y(1,2)是大小为2的向量,其中值是与y中的位置对应的值。计算新向量[-3,2]后 这将被分配到向量y中的第2和第3位置。导致向量[1,-3,2,0]

第3步: 重复步骤2,但这次使用大小为3的向量,并用y矩阵中的2,3,4位置替换结果,得出最终向量y为:[1,-6,11,-6]