如何将 && 操作数求解为逻辑标量

Posted

技术标签:

【中文标题】如何将 && 操作数求解为逻辑标量【英文标题】:How to solve && operands to logical scalar 【发布时间】:2012-02-28 16:13:52 【问题描述】:

我在matlab中运行代码后,遇到这个错误,不知道如何解决。我该如何解决这个问题。

警告:

|| 的操作数和 && 运算符必须可转换为逻辑标量值。

    Jgray = double(rgb2gray(J));
    % Calculate the Gradients
    [dIx, dIy] = gradient(Jgray);
    if max(dIx)<=103 && max(dIy)<=100
        B =  abs(dIy) - abs(dIx);
    else
        B = abs(dIx) - abs(dIy);
    end

【问题讨论】:

【参考方案1】:

如果 dIx 和 dIy 是矩阵(相对于一维向量),max(dIx)max(dIy) 将返回向量。

&amp;&amp;|| 应该用于比较标量,而不是向量。

可能想要输入

if max(dIx(:))<=103 && max(dIy(:))<=100

但我不能确定,因为我不知道代码应该做什么:)

【讨论】:

【参考方案2】:

&amp;| 用于矩阵而不是&amp;&amp;||

&amp;&amp;|| 是短路运算符。如果您考虑一下,它们对矩阵毫无意义。例如,只要第一个参数为 true,短路或 - || 就会停止并返回 true。 但是如何将其扩展到矩阵?

【讨论】:

以上是关于如何将 && 操作数求解为逻辑标量的主要内容,如果未能解决你的问题,请参考以下文章

Flink Table API & SQL 自定义 Scalar 标量函数

逻辑运算符 三目运算符

js 非布尔值操作 逻辑与 和 逻辑或*

逻辑操作符“&&”的三层理解

复数乘以标量

R语言逻辑操作符:&|!&&||