冒号运算符与数组的奇怪行为
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 )
我正在查看我找到的 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-valuedfi
object or built-in numeric type.If you specify non-scalar arrays, MATLAB interprets
j:i:k
asj(1):i(1):k(1)
.
所以是的,它确实做了你提到的数组语法,取向量的第一个元素。
Octave 遵循此实现,参见 the official source code (thanks to