2016-04-07 4 views
0

Что такое ошибка в этой строке кода:операнды к && операторов должны быть конвертированы в логические значения скалярных:

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

Я получаю следующее сообщение об ошибке:

??? 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

У вас есть дополнительная информация о том, что такое 'BB'? Также я предполагаю, что вы на самом деле означаете 'max (BB ((i-4): i))' – Suever

+0

@Suever: BB - это вектор. вы правы, я действительно имею в виду макс (BB ((i-4): i)). Спасибо. – bzak

ответ

2

Попробуйте изменить к &.
&& и || являются сокращением для использования короткого замыкание поведения см here и here.

+1

Кажется, что OP действительно хочет '&&' здесь. Фактически, использование '&' или '|' может скрывать потенциальные ошибки, когда тест, предназначенный для возврата скаляра (как в вопросе OP), возвращает массив: если в этом массиве есть запись с оценкой «false», все выражение является 'false', если речь идет о' if'. – zeeMonkeez