我们说我有一个数组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)
)相乘,并使用我的每个乘法数字自定义功能。
答案 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)
构造。
大多数情况下,通过立即将数组(向量和矩阵)传递给函数来实现加速,并构造函数本身以便它可以处理数组。如何做后者取决于功能是什么。