私はMatlabを少し使い慣れており、ベクトル入力用の多変数関数の定義について質問があります。ベクトル入力用の多変数関数の定義
この関数が単一の関数、たとえばf(t)
である場合、ベクトル入力用の方法を知っています。一般的な方法は、f(t)
を定義した後にarrayfun
を使用することです。多変数関数の場合はどうでしょうか、例えばf(x,y)
?私は何をしたいy
ためx
ため[1 2 3]
と[4 5 6 7]
言って、2つの入力を取得することです(異なる場合があります寸法は、それらの両方は、いずれかの列ベクトルまたは行ベクトルです)私は与えることを計算することができるように
[f(1,4),f(1,5),f(1,6),f(1,7);
f(2,4),f(2,5),f(2,6),f(2,7);
f(3,4),f(3,5),f(3,6),f(3,7)]
x
とy
のベクトル入力が同じ次元にない可能性があります。
f(x,y)
の例がない場合は説明が難しいかもしれないことをご理解ください。 f(x,y)
の私の使用のために、f(x,y)
を表示することは非常に複雑かもしれません。簡略化のためf(x,y)
をx^2+y
とし、一度定義するとベクトル入力の場合はx.^2+y
に変更できません。
ベクトルに作用するように 'x^2 + y'を適合させるのは簡単です。しかし、2つの変数の代わりに2つのベクトルを使って関数を与えることはできません。異なるサイズの2つのベクトルのすべての組み合わせで行列を作ることは難しくありません。 –
また、一般的な方法は 'arrayfun'を使うのではなく、古き良きループを使うことです。私は 'arrayfun'がループより速い単一のケースをまだ見ていません。もちろん、 'arrayfun'はもっときれいに見えるかもしれません。 –
ループがarrayfunを使用するよりも高速であることを意味しますか?私がループを使ってそれを書くには、私はダブルループを使います。ディメンションが非常に高い場合は、非常に遅くなる可能性があります。 –