
Suponha que alguém tenha funções f(i)
e g(j)
. Como alguém poderia escrever uma função h(k)
onde o domínio k
de h
é composto por todos k=i+j
(ou seja, cada ponto h(k)
é alguma função de f
at i
e g
at j
para todos os pares de i
e j
satisfatórios k=i+j
). Por exemplo:
para todos k=i+j
. O domínio de h
seria, portanto k=2:25
, e, por exemplo, h(3)
seria igual, f(1)*g(2) + f(2)*g(1)
uma vez que ambas as combinações satisfazem k=i+j
.
Isso é simples de fazer usando loops, mas desejo compor a função na forma de função anônima (ou seja, h = @(k) f(i) ... g(j)
). Como pode ser isto alcançado?
Responder1
Sejam variáveis a
conhecidas b
para os domínios i e j. Então a função que você descreve pode ser assim:
fun=@(k) sum(sum(transpose(f1(k-b(ismember(b,(k-a)))))*f2(b(ismember(b,(k-a))))))
onde f1
e f2
são funções anônimas correspondentes a f(i) e g(j). k
é um escalar válido.
Nota: pode não ser considerado uma boa prática usar uma função anônima para algo não trivial.
Nota2: Não considerei cenários com domínios não exclusivos para i e j, nem valores negativos.