2016-04-07 13 views
0

Was ist der Fehler in dieser Codezeile:Operanden zu den && Operatoren auf logisch skalare Werte konvertierbar sein:

if BB(i) <= max([BB(i-4):BB(i)]) && BB(i) <= max([BB(i-7):BB(i)]) 

bekomme ich folgende Fehlermeldung:

??? Operands to the || and && operators must be convertible to logical scalar values. 
Error in ==> if BB(i) <= max([BB(i-4):BB(i)]) && BB(i) <= max([BB(i-7):BB(i)]) 
+4

Haben Sie weitere Informationen darüber, was "BB" ist? Ich vermute, du meinst tatsächlich 'max (BB ((i-4): i))' – Suever

+0

@Suever: BB ist ein Vektor. Du hast recht, tatsächlich meine ich max (BB ((i-4): i)). Vielen Dank. – bzak

Antwort

2

Versuchen an sich ändernde &.
&& und || sind Abkürzungen für die Verwendung von Kurzschluss Verhalten, siehe here und here.

+1

Es scheint, OP will '&&' hier. Tatsächlich kann die Verwendung von '&' oder '|' potentielle Fehler verbergen, wenn ein Test, der Skalar zurückgeben soll (wie in der Frage von OP), ein Array zurückgibt: Wenn dieses Array einen Eintrag hat, der 'false' auswertet, der gesamte Ausdruck ist "falsch" soweit "betrifft". – zeeMonkeez