比方说,我有一个数组A = [1 2 3 4 5 6 7 8 9 10]
。我想遍历它并对每个数字做一些事情。Octave使用迭代(开始:步:结束)
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)
),并使用我的自定义函数中的每个相乘的数字。
'A(1:10)'是一个数组表达式;特别是长度为10的矢量表达式,它的形状可以是1x10或10x1,我永远不会记得它是正确的。你想做的事情看起来像逐元素乘法运算符('。*')所做的,所以你对一个函数的调用应该是:f(A(1:end-1)。* A(2: )' –
你在找什么叫矢量化,通常涉及['bsxfun'](http://www.mathworks.com/help/matlab/ref/bsxfun.html),但我们必须知道你正在使用的功能是为了提出一个解决方案。 – beaker