# How to construct indicator function in array function?

7 views (last 30 days)
WeiHung Liao on 31 Mar 2021
Commented: WeiHung Liao on 3 Apr 2021
In my original problem, I want to construct piecewise linear equation to analyze its wavefront.
However, the number of points are about 200~400. Thus, using "pw" to construct function is not efficient to my problem and it works case by case.
Hence, I try to construct a indicator function as follows. For example,
f= [2;3;4];
g= [2.5;4;8];
h= arrayfun(fg(x,f,g),f,g)
function out=fg(x,f,g)
fval=f;
gval=g;
if x>=fval & x<=gval
out=1;
else
out=0;
end
end
Its result show "Unrecognized function or variable 'x'."
I also refer to the related question Passing array arguments to an anonymous function, but I still cannot work out.
I WANT: it can show like this
h(2.1)= [1; 0; 0] , h(4)=[0; 1; 0]

Stephen Cobeldick on 31 Mar 2021
I don't see why you need arrayfun:
f = [2;3;4];
g = [2.5;4;8];
fun = @(x) x>=f & x<=g;
fun(2.1)
ans = 3×1 logical array
1 0 0
fun(4) % your example is incorrect: 4 is definitely equal to 4 and less than 8
ans = 3×1 logical array
0 1 1
##### 2 CommentsShowHide 1 older comment
WeiHung Liao on 3 Apr 2021
Thank for your answer, it helps me to realize my construction of piecewise linear function.