How to solve && operands to logical scalar

佐手、 提交于 2019-11-27 06:52:07

问题


After I run the code in matlab, I encounter this error and unsure how to solve it. How can I solve this problem.

Warning:

Operands to the || and && operators must be convertible to logical scalar values.

    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:


If dIx and dIy are matrices (as opposed to 1-D vectors), max(dIx) and max(dIy) will return vectors.

&& and || should be used to compare scalars, not vectors.

You probably want to type

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

but I cannot tell for sure, as I dont know what the code is supposed to do :)




回答2:


Use & and | for matrixes instead of &&, || .

&& and || are short circuit operators. If you think about it, they make no sense for matrixes. For example, the short circuit or - || stops and returns true whenever the first argument is true.
But how would you extend that to a matrix?



来源:https://stackoverflow.com/questions/9172789/how-to-solve-operands-to-logical-scalar

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!