2012-02-07 3 views
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 

답변

7

(1-D 벡터와는 대조적으로) 딕스 및 DIY 행렬이 경우 max(dIx)max(dIy)는 벡터를 리턴한다.

&&||은 벡터가 아닌 스칼라를 비교하는 데 사용해야합니다.

당신 은 아마

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

을 입력합니다하지만 코드가 할 :)

5

사용 &|을 대신 행렬을 위해 가정 무슨 잘 모릅니다으로 나는 확실히 말할 수 없다 &&, ||.

&&||은 단락 회로 연산자입니다. 생각해 보면 행렬에 대해서는 아무런 의미가 없습니다. 예를 들어 첫 번째 인수가 true 일 때마다 단락 또는 - ||이 중지되고 true을 반환합니다.
하지만 매트릭스로 어떻게 확장 할 수 있습니까?