我有一个包含一堆逻辑值的数组,它看起来像:
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强制任何不符合1
或0
最接近逻辑值的值 - 但我想确认.这肯定很奇怪.
这是因为你的数组是boolean,并且在boolean中5
求true
值,显示为1
.在英语中,您的代码test(test == 0) = 5
转换为"将所有False值设置为True".结果是全true
数组,即全部数组.