我不是一个非常频繁的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)
显然返回一个空数组。为什么?
我找不到关于这个相当奇怪的行为的任何参考,这就是为什么我在这里问,对不起,如果它是重复或我应该知道的一些正常行为。
答案 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])
等
这对于准备一个逻辑数组非常有用,该逻辑数组包含有关每个数组位置的信息,并且根据逻辑状态考虑或不考虑此数组。