У меня есть логический массив, назовите его flag
.
У меня есть два числовых массива ifTrue
, ifFalse
. Все эти массивы имеют одинаковый размер. Для целей этого вопроса предположим, что каждый элемент в этих массивах уникален.
Мне нужна функция g
со свойством, которое
a = g(flag, ifTrue, ifFalse)
all(flag == (a == ifTrue))
all(~flag == (a == ifFalse))
Или на английском языке, я бы хотел, чтобы g
возвращала элементы ifTrue
, когда flag
- истина, и элементы ifFalse
, когда flag
- ложь.
Или в Matlab я мог бы сделать это с помощью циклов:
a = zeros(size(ifTrue));
for i = 1 : numel(ifTrue);
if flag(i)
a(i) = ifTrue(i)
else
a(i) = ifFalse(i)
end
end
Есть ли векторизованный подход?
Спасибо