我有以下matlab代码,但它不能按预期工作:
r = y > 0 % logical check
r(r == 0) = -1 % set all zeros to minus one
Run Code Online (Sandbox Code Playgroud)
为什么它不像预期的那样工作?
逻辑向量只能包含布尔值1或0.如果将任何其他值例如-1分配给逻辑矢量的元素,则该值将被转换为两个可能值中的一个.
如果要在向量中包含其他值,请考虑转换其数据类型.
在您当前的场景中,您可能希望执行以下操作:
r = y > 0;
r = (double(r) * 2) - 1;
Run Code Online (Sandbox Code Playgroud)
或者如评论中@Dan所建议的那样,您也可以直接执行此操作:
r = (y > 0) * 2 - 1;