如何解决&&逻辑标量的操作数

时间:2012-02-07 08:01:28

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

在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

2 个答案:

答案 0 :(得分:7)

如果dIx和dIy是矩阵(与1-D向量相对),max(dIx)max(dIy)将返回向量。

应使用

&&||来比较标量,而不是向量。

可能想要输入

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

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

答案 1 :(得分:5)

使用&|代替&&||

&&||是短路运营商。如果你考虑一下,它们对矩阵毫无意义。例如,短路或 - ||会在第一个参数为true时停止并返回true
但是,您如何将其扩展到矩阵?