Вот менее очевидное решение (тем не менее, векторизованное):
f = @(x) subsasgn(zeros(size(x)), struct('type','()','subs',{{x>=1}}), nan) + 0
По сути, оно эквивалентно:
function v = f(x)
v = zeros(size(x));
v( x>=1 ) = nan;
+0
в конце всегда состоит в форсировании вывода,даже если f
вызывается без выходных аргументов (возвращается в ans
).Пример:
>> f(-2:2)
ans =
0 0 0 NaN NaN