
Предположим, что есть функции f(i)
и g(j)
. Как можно написать функцию h(k)
, где область k
определения h
состоит из всех k=i+j
(т.е. каждая точка h(k)
является некоторой функцией от f
при i
и g
при j
для всех пар i
и , j
удовлетворяющих k=i+j
). Например:
для всех k=i+j
. Область определения, h
таким образом, будет k=2:25
и, например, h(3)
будет равна , f(1)*g(2) + f(2)*g(1)
поскольку обе эти комбинации удовлетворяют k=i+j
.
Это просто сделать с помощью циклов, но я хочу составить функцию в форме анонимной функции (т.е. h = @(k) f(i) ... g(j)
). Как это можно сделать?
решение1
Пусть a
и b
будут известными переменными для доменов i и j. Тогда описанная вами функция может выглядеть так:
fun=@(k) sum(sum(transpose(f1(k-b(ismember(b,(k-a)))))*f2(b(ismember(b,(k-a))))))
где f1
и f2
— анонимные функции, соответствующие f(i) и g(j). k
— допустимый скаляр.
Примечание: использование анонимной функции для чего-то нетривиального может считаться нехорошей практикой.
Примечание 2: Я не рассматривал сценарии с неуникальными доменами для i и j, а также отрицательными значениями.