matlab:使函数的定义域依赖于输入的定义域

matlab:使函数的定义域依赖于输入的定义域

假设有函数f(i)g(j)。如何写出一个函数,其中 的h(k)定义域由所有 组成(即,对于所有满足 的和对,每个点都是在和在的某个函数)。例如:khk=i+jh(k)figjijk=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

ab为域 i 和 j 的已知变量。则您描述的函数可能如下所示:

fun=@(k) sum(sum(transpose(f1(k-b(ismember(b,(k-a)))))*f2(b(ismember(b,(k-a))))))

其中f1f2是对应于 f(i) 和 g(j) 的匿名函数。k是有效标量。

注意:对于一些非平凡的事情使用匿名函数可能不被认为是一种好的做法。

注2:我没有考虑过i和j的域不唯一或为负值的情况。

相关内容