У меня есть логический массив, назовите его 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
Есть ли векторизованный подход?
Спасибо