2012-02-07 10 views
7

Dopo aver eseguito il codice in matlab, ho riscontrato questo errore e non so come risolverlo. Come posso risolvere questo problema.Come risolvere e gli operandi su scalare logico

Attenzione:

Operandi alla || e gli operatori & & devono essere convertibili in valori scalari logici.

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 

risposta

7

Se DIX e bricolage sono matrici (al contrario di 1-D vettori), max(dIx) e max(dIy) tornerà vettori.

&& e || devono essere utilizzati per confrontare gli scalari, non i vettori.

È probabilmente desidera digitare

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

ma non posso dire di sicuro, come non so che cosa si suppone che il codice per fare :)

5

Usa & e | per matrici invece di &&, ||.

&& e || sono operatori di cortocircuito. Se ci pensi, non hanno senso per le matrici. Ad esempio, il cortocircuito o - || si interrompe e restituisce true ogni volta che il primo argomento è true.
Ma come estenderlo a una matrice?

Problemi correlati