How to construct indicator function in array function?

99 views (last 30 days)
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]

Accepted Answer

Stephen23
Stephen23 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 Comments
WeiHung Liao
WeiHung Liao on 3 Apr 2021
In the beginning,I define f and g as anonymous functions and h as mentioned above. But I run h(.),it return it is 1x1 cell. Thus,I refer the question listed above and try arrayfun to realize it. My original goal is to defined piecewise continuous function with given breakpoints.
WeiHung Liao
WeiHung Liao on 3 Apr 2021
Thank for your answer, it helps me to realize my construction of piecewise linear function.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!