如何解决&&操作符到逻辑标量

Kim*_*Kim 7 matlab logic if-statement 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
Run Code Online (Sandbox Code Playgroud)

use*_*059 7

如果DIX和DIY是矩阵(相对于1-d载体),max(dIx)max(dIy)将返回向量.

&&并且||应该用于比较标量,而不是矢量.

可能想输入

if max(dIx(:))<=103 && max(dIy(:))<=100
Run Code Online (Sandbox Code Playgroud)

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


And*_*ein 5

使用&|为矩阵代替&&,||.

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