我的印象是||是MATLAB中的“或”语句。也许有人可以解释我所看到的令人困惑的行为:
a = 2;
a == 2 %returns ans = 1 (true)
a == 2 || 3 %returns ans = 1 (true)
a == 3 || 4 %returns ans = 1 (true)??!!
我在这里缺少什么? 'a'既不是3也不是4,所以不应该
a == 3 || 4
return ans = 0(false)?
答案 0 :(得分:6)
表达式
In Development
以这种方式评估:
In testing
如果你想检查a是否等于3或4你应该写
a == 3 || 4
以这种方式评估
a == 3 => false
then
false || 4 => true
答案 1 :(得分:0)
solutions = [3 4];
any(a==solutions);
a==solutions
行创建一个与解决方案大小相同的矩阵,其中包含条件为true的1和0,其中0为false。
还有一些例子:
any(isprime([17:24])); %returns true; 17, 19 and 23 are prime
any(isinteger(sqrt([17:24]))); %(test for square number) returns false; no square numbers in this range
any(mod(magic(3)(:),6)==3); %returns true; 9 mod 6 == 3. Note (:) inserted so that any is evaluated against all entries of the square matrix created by magic
答案 2 :(得分:0)
a == 3 || 4 %returns ans = 1 (true)
?? !!
上述行为的原因是由于除了' 0'之外的任何实数。在MATLAB中总是被评估为真。
所以这里发生的是
a == 3
,发现false
。 false || 4
。false || true
,其计算结果为true
。 要获得所需结果,请使用(a == 3) || (a == 4)
,其评估为false || false
,返回false
。