【问题标题】: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

【问题讨论】:

    标签: matlab if-statement logic logical-operators operands


    【解决方案1】:

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

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

    可能想要输入

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-04-07
        • 1970-01-01
        • 1970-01-01
        • 2013-04-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多