冒号运算符与数组的奇怪行为

Weird behaviour for colon operator with arrays

我正在查看我找到的 Octave 函数的代码,我发现了冒号运算符的奇怪用法。我无法在文档或 MathWorks 官方博客(例如 Colon Operator

中找到解释此行为的信息

假设我们有几个向量:

>> a=[1,2,3]
a =
   1   2   3
>> b=[7,8,9]
b =
   7   8   9

现在,如果您使用冒号运算符,您将拥有:

>> a:b
ans =
   1   2   3   4   5   6   7

经过多次尝试,我的理解是,上面的用法等同于:

>> a(1):b(1)
ans =
   1   2   3   4   5   6   7

我的假设正确吗?
某处有一些文档吗?

其实官方是有记载的MATLAB documentation on colon:

j — Beginning operand
real scalar
Beginning operand, specified as a real scalar integer-valued fi object or built-in numeric type.

If you specify non-scalar arrays, MATLAB interprets j:i:k as j(1):i(1):k(1).

所以是的,它确实做了你提到的数组语法,取向量的第一个元素。

Octave 遵循此实现,参见 the official source code (thanks to )