Операнды операторов && должны преобразовываться в логические скалярные значения:

В чем ошибка в этой строке кода:

 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)])

person bzak    schedule 07.04.2016    source источник
comment
У вас есть дополнительная информация о том, что такое BB? Также я предполагаю, что вы на самом деле имеете в виду max(BB((i-4):i))   -  person Suever    schedule 08.04.2016
comment
@Suever: BB - это вектор. вы правы, я действительно имею в виду max(BB((i-4):i)). Спасибо.   -  person bzak    schedule 08.04.2016


Ответы (1)


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

person Steve Heim    schedule 08.04.2016
comment
Кажется, ОП хочет && здесь. Фактически, использование & или | может скрыть потенциальные ошибки, когда тест, предназначенный для возврата скаляра (как в вопросе OP), возвращает массив: если в этом массиве есть запись, оценивающая значение false, все выражение равно false до if обеспокоен. - person zeeMonkeez; 08.04.2016