matlab: tornando o domínio de uma função dependente do domínio das entradas

matlab: tornando o domínio de uma função dependente do domínio das entradas

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 kde hé composto por todos k=i+j(ou seja, cada ponto h(k)é alguma função de fat ie gat jpara todos os pares de ie jsatisfatórios k=i+j). Por exemplo:

insira a descrição da imagem aqui

para todos k=i+j. O domínio de hseria, 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 bpara 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 f1e f2sã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.

informação relacionada