【问题标题】:Basic for loop in Octave expandedOctave 中的基本 for 循环已扩展
【发布时间】:2015-09-22 15:59:27
【问题描述】:

由于某种原因,我无法在 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)

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

【问题讨论】:

  • x=[1,2,3] y=[1,0,0,0] 循环我得到 [1 -6 11 -6] 一步一步 [1 -6 24 -72] 这很奇怪,因为第二个值是正确的。

标签: for-loop octave


【解决方案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中的第2个位置会变成-1。

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

第 2 步:

下一个循环将执行

这里 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]

【讨论】:

  • 现在我明白了,它不适用于单个值,而是使用 (2:(i+1)) 给出的矩阵。那是缺失的环节。谢谢你的回答。很遗憾,我(还)不能投票,但我会将此标记为答案。
  • 好吧,我认为正确的术语是它们是向量而不是单个值(标量)。但是,是的!谢谢!
猜你喜欢
  • 2019-03-07
  • 1970-01-01
  • 2019-02-26
  • 2015-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-05
相关资源
最近更新 更多