为什么阵列索引是MATLAB的布尔值



我不是一个非常频繁的MATLAB用户。所以今天,当我收到消息"Subscript indices must either be real positive integers or logicals."时,这让我想知道。如果我做了

会发生什么
x = [1 2 3];
x(true)
x(false)

我的猜测是将false视为0,为1,因此x(true)应该返回第一个元素,而x(false)应该返回错误。没有。x(false)显然返回一个空数组。为什么?

我找不到有关这种奇怪行为的任何参考,这就是为什么我在这里问,对不起,这是重复的还是我应该知道的一些正常行为。

matab 很奇怪,但是在这种情况下是一个非常整洁的功能。

如果您有x = [1 2 3];,则可以使用相应长度的逻辑访问:

  • x([false false true])等于x(3)
  • x([false false false])等于x([])
  • x([false true true])等于x([2 3])

等。

这对于准备一个逻辑数组很有用,该数组包含有关每个数组位置的信息,并且根据逻辑状态考虑或不考虑该位置。

最新更新