В Matlab (по состоянию на 2016a) условное if (array_of_logicals)
функционально эквивалентно if (all(array_of_logicals))
. В документации говорится: "Выражение истинно, если его результат непуст и содержит только ненулевые элементы (логические или действительные числовые).
С другой стороны, assert()
принимает только "Условие утверждения, указанное как допустимое выражение MATLAB». Экспериментально это означает, что array_of_logicals
следует использовать как assert(all(array_of_logicals))
.
В чем, по-вашему, причина немного другого поведения?
Я понимаю, что одной из причин может быть то, что с помощью assert()
вы хотите исключить двусмысленность интерпретации assert(all(array_of_logicals))
и assert(any(array_of_logicals))
, но то же самое можно сказать и о if
.
Редактировать: В частности, я хотел бы понять, почему это поведение было выбрано для if
.
assert
по своей природе должно быть как можно более явным. - person Suever   schedule 19.08.2016