
Supongamos que uno tiene funciones f(i)
y g(j)
. ¿Cómo se podría escribir una función h(k)
donde el dominio k
de h
esté formado por todos k=i+j
(es decir, cada punto h(k)
es alguna función de f
at i
y g
at j
para todos los pares de i
y j
que satisfagan k=i+j
)? Por ejemplo:
para todos k=i+j
. El dominio de h
sería entonces k=2:25
y, por ejemplo, h(3)
sería igual a f(1)*g(2) + f(2)*g(1)
ya que ambas combinaciones satisfacen k=i+j
.
Esto es sencillo de hacer usando bucles, pero deseo componer la función en forma de función anónima (es decir, h = @(k) f(i) ... g(j)
). ¿Cómo se puede lograr esto?
Respuesta1
Sean a
y b
variables conocidas para los dominios i y j. Entonces la función que usted describe podría verse así:
fun=@(k) sum(sum(transpose(f1(k-b(ismember(b,(k-a)))))*f2(b(ismember(b,(k-a))))))
donde f1
y f2
son funciones anónimas correspondientes a f(i) y g(j). k
es un escalar válido.
Nota: puede que no se considere una buena práctica utilizar una función anónima para algo que no sea trivial.
Nota 2: No he considerado escenarios con dominios no únicos para i y j, ni valores negativos.