修改逻辑数组时的奇怪行为

1 arrays matlab

我有一个包含一堆逻辑值的数组,它看起来像:

test = [1 1 1 1 1 0 0 1 1 0 0 ...].

如果我想更改标量值的正常数组 - 让我们说

a = [1 2 3 4]

我可以:

a(a == 1) = 5

结果就是

[5 2 3 4]

正如所料.

但是,如果我这样做:

test(test == 0) = 5

我得到了一些意外的回报:

[1 1 1 1 1 1 1 1 1 1 1 1 1 1....

所有的0都改为1!

我怀疑这是因为数组充满了逻辑,并且由于类型检查,MATLAB强制任何不符合10最接近逻辑值的值 - 但我想确认.这肯定很奇怪.

Ain*_*tor 7

这是因为你的数组是boolean,并且在boolean中5true值,显示为1.在英语中,您的代码test(test == 0) = 5转换为"将所有False值设置为True".结果是全true数组,即全部数组.