我有以下matlab代码,但它无法正常工作:
r = y > 0 % logical check
r(r == 0) = -1 % set all zeros to minus one
为什么它不能像预期那样工作?
答案 0 :(得分:5)
逻辑向量只能包含布尔值1
或0
。如果有任何其他价值, -1
被分配给逻辑向量的元素,该值将被转换为两个可能值之一。
如果要在向量中包含其他值,请考虑转换其数据类型。
在您目前的情况下,您可能希望执行以下操作:
r = y > 0;
r = (double(r) * 2) - 1;
或者正如@Dan在评论中所建议的那样,你也可以直接这样做:
r = (y > 0) * 2 - 1;