MATLAB中的条件“或”语句

时间:2016-09-14 18:40:58

标签: matlab if-statement conditional

我的印象是||是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)?

3 个答案:

答案 0 :(得分:6)

表达式

In Development

以这种方式评估:

In testing

如果你想检查a是否等于3或4你应该写

a == 3 || 4

以这种方式评估

a == 3     => false
then
false || 4 => true

答案 1 :(得分:0)

托马斯的回答是对这里发生的事情的一个很好的解释;另一种可以将变量与多个答案进行比较的方法是使用any()函数。

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
  • 因为' 4'是一个非零的实数,结果表达式为false || true,其计算结果为true

要获得所需结果,请使用(a == 3) || (a == 4),其评估为false || false,返回false