How to construct indicator function in array function?

93 visualizaciones (últimos 30 días)
WeiHung Liao
WeiHung Liao el 31 de Mzo. de 2021
Comentada: WeiHung Liao el 3 de Abr. de 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]

Respuesta aceptada

Stephen23
Stephen23 el 31 de Mzo. de 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 comentarios
WeiHung Liao
WeiHung Liao el 3 de Abr. de 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 el 3 de Abr. de 2021
Thank for your answer, it helps me to realize my construction of piecewise linear function.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Least Squares en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by