Предположим, что есть функции 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 ответ1

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, а также отрицательные значения.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .