bsxfun などの関数があります: http://www.mathworks.com/help/techdoc/ref/bsxfun.htmlただし、要素ごとのモードで動作します。ベクトルごとのモード(およびスカラー出力)で機能する同様の関数が必要です。
例として、ここで bsxfun をそのように使用しようとします。内部関数として、ベクトルの内積を使用します (これは単なる例です)。
function f = foo(a,b), f=a'*b; printf("called\n");, end
上記のダミー関数foo
は 2 つのベクトルを想定しており、結果はスカラーです。呼び出されるたびに、メッセージが表示されます。
bsxfun(@foo,[2;3],[1 5;4 3])
結果は次のとおりです。
called
called
ans =
14 19
0 0
したがって、2 つの呼び出し (良い) ですが、ベクトル (2 つのスカラーのペア) の代わりに行列を取得します。このような場合、行列は事前に bsxfun によって作成され、残りは常にゼロになるため、最初の行だけを取得するだけで十分です。
しかし、常にそうであるとは限りません.ゼロだけでなく、いくつかの実際の値を取得することもあります.また、いくつかの副作用が含まれているのではないかと心配しています.
質問
では、bsxfun に似ているが、ベクトルを取得し、それらのベクトルの各操作ごとにスカラーを期待する関数はありますか?