我想检查是否x是NaN或inf.如果是,我用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中?
它们并不完全相同.||如果左侧的结果足以产生答案,则不评估右手参数.这称为短路,也适用于&&.
因为|,两个参数总是被评估.
此外,||返回简单的1或0(真或假).
但是|计算一个按位 OR,所以结果略有不同.为相应的&操作者这甚至可以是有害的:例如,如果左侧返回二进制0b01和右手侧的二进制0b10然后,虽然两个参数为非零,则表达式的结果是零.
在你的情况下,使用 if isnan(x) || isinf(x)