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))))))

ここでf1、およびはf2f(i)およびg(j)に対応する無名関数です。kは有効なスカラーです。

注意: 重要でない用途に匿名関数を使用することは、良い方法とは言えないかもしれません。

注 2: i と j のドメインが一意でない場合や、負の値の場合のシナリオは考慮していません。

関連情報