为什么数组索引可以在MATLAB中作为布尔值?

时间:2016-06-16 09:45:34

标签: matlab

我不是一个非常频繁的Matlab用户。所以今天,当我收到消息"Subscript indices must either be real positive integers or logicals."时,它让我感到疑惑。如果我做了会发生什么

x = [1 2 3];
x(true)
x(false)

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

我找不到关于这个相当奇怪的行为的任何参考,这就是为什么我在这里问,对不起,如果它是重复或我应该知道的一些正常行为。

1 个答案:

答案 0 :(得分:4)

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

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

  • x([false false true])相当于x(3)
  • x([false false false])相当于x([])
  • x([false true true])相当于x([2 3])

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