为什么有时我会使用| 有时候|| for"或"在MATLAB中?

Ka-*_*Yip 2 matlab

我想检查是否xNaNinf.如果是,我用1替换它.

if isnan(x) || isinf(x)
    x = 1;
end
Run Code Online (Sandbox Code Playgroud)

VS

x(isnan(x)|isinf(x)) = 1;
Run Code Online (Sandbox Code Playgroud)

他们在表达"或"方面都是正确的吗?似乎他们都工作但我不确定,我不知道为什么有时候我会使用| 有时候|| for"或"在MATLAB中?

Bat*_*eba 8

它们并不完全相同.||如果左侧的结果足以产生答案,则不评估右手参数.这称为短路,也适用于&&.

因为|,两个参数总是被评估.

此外,||返回简单的1或0(真或假).

但是|计算一个按位 OR,所以结果略有不同.为相应的&操作者这甚至可以是有害的:例如,如果左侧返回二进制0b01和右手侧的二进制0b10然后,虽然两个参数为非零,则表达式的结果零.

在你的情况下,使用 if isnan(x) || isinf(x)