冒号运算符与数组的奇怪行为[重复]

问题描述 投票:0回答:1

我正在研究我发现的 Octave 函数的代码,我发现了冒号运算符的奇怪用法。我找不到文档或官方 MathWorks 博客中解释的此行为(例如冒号运算符

假设我们有几个向量:

>> 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

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

arrays matlab octave operator-keyword
1个回答
6
投票

它实际上记录在关于冒号的官方 MATLAB 文档中

j
— 开始操作数
实标量
开始操作数,指定为实标量整数值
fi
对象或内置数字类型。

如果您指定非标量数组,MATLAB 会将

j:i:k
解释为
j(1):i(1):k(1)

所以是的,它确实执行了您提到的数组语法的操作,即获取向量的第一个元素。

Octave 遵循此实现,请参阅官方源代码(感谢Andy找到这个

© www.soinside.com 2019 - 2024. All rights reserved.