7

在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
4

2 回答 2

7

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

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

可能想要输入

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

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

于 2012-02-07T08:21:41.270 回答
5

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

&&并且||是短路操作员。如果您考虑一下,它们对矩阵毫无意义。例如,只要第一个参数是,短路或 - 就会||停止并返回。 但是您如何将其扩展到矩阵?truetrue

于 2012-02-07T09:18:38.627 回答