Octave使用迭代(开始:步骤:结束)

时间:2016-03-20 17:34:56

标签: octave

我们说我有一个数组A = [1 2 3 4 5 6 7 8 9 10]。我想迭代它并对每个数字做一些事情。

A(start:step:end) - >因为我想用步骤1进行迭代,所以我使用A(1:10)

这里的问题是,我该如何使用该迭代?在C ++中你会做

for (int i = 0; i < 10; i++)
{
    //DO SOMETHING
}

我花了4个小时搜索如何使用该迭代。我没有找到这样一个简单的事情的单一解释:传递代码块实际上用数字做一些事情。甚至不知道如何使用当前索引(即C ++中的i)。

我的函数在Octave f = @(variable) (...)中,但是当我调用f(A(1:10))时,它并没有真正地将每个数字传递给函数,而是完成迭代然后执行函数。

我期待像

这样的东西
A(1:10) (DO SOMETHING WITH EACH NUMBER)

或在我的例子中

A(1:10) ( f(INDEX) )

但这似乎也不起作用。

我知道Octave有一个内置for循环但在我的情况下它太慢了。

这是简化的解释,这里更先进。 我希望将矩阵A乘以一个矩阵与1开始迭代,另一个矩阵与2(例如A(1:end-1).*A(2:end))相乘,并使用我的每个乘法数字自定义功能。

1 个答案:

答案 0 :(得分:0)

C ++循环的类比

for (int i = 0; i < 10; i++)
{
  //DO SOMETHING
}

将是

for i = 1:10
//DO SOMETHING 
end 

因为Octave指数是从1开始的。

Octave中没有array.forEach(do something)构造。

大多数情况下,通过立即将数组(向量和矩阵)传递给函数来实现加速,并构造函数本身以便它可以处理数组。如何做后者取决于功能是什么。