I have a boolean array call it flag.
I have two numeric arrays ifTrue, ifFalse. All these arrays are the same size, For purposes of this question assume every element in these arrays is unique.
I would like a function g with the property that
a = g(flag, ifTrue, ifFalse)
all(flag == (a == ifTrue))
all(~flag == (a == ifFalse))
Or in English, I would like g to return ifTrue elements when flag is true, and ifFalse elements when flag is false.
Or, in matlab, I could do this with loops:
a = zeros(size(ifTrue));
for i = 1 : numel(ifTrue);
if flag(i)
a(i) = ifTrue(i)
else
a(i) = ifFalse(i)
end
end
Is there a vectorized approach?
Thanks
1 Answer