2D 配列のセット (必要に応じて 3D マトリックス) で 2 つのパラメーター (1 つのセット: t、もう 1 つは配列から取得) の指数演算を実行する必要があります。f(t,x) = exp(tx) そして、3 次元のすべての値の結果を追加する必要があります。bsxfun
操作全体を実行するには時間がかかりすぎるため、ルックアップ テーブルの使用を考えていました。
テーブルをマトリックスLUT
(2 つのパラメーターにより 2 次元) として作成し、 を使用して値を取得できますLUT(par1,par2)
。しかし、ループを使用して 3 次元にアクセスするのもコストがかかります。
私の質問は次のとおりです。そのようなメカニズム(ルックアップテーブル)を実装して定義済みの値を持ち、ループなしでマトリックス要素からアクセスする(インデックスの種類)だけを使用する方法はありますか。または、指数演算を高速化するために MATLAB が自動的に処理するルックアップ テーブルを作成するにはどうすればよいですか?
編集:実際にLUTを作成するために同様の方法を使用しました。さて、私の問題は実際に効率的な方法でアクセスする方法です。
2次元配列があるとしましょうM
。f(t,M(i,j))
これらの値を使用して、固定値の関数を適用しますt
。ループを使用して、M のすべての値 (i,j) を調べることができます。ただし、M のセットがあるため、より高速な方法が必要であり、この手順を他のすべての値に適用する必要があります。 .
私の関数は、私が与えた例よりも少し複雑です:
pr = mean(exp(-bsxfun(@rdivide,bsxfun(@minus,color_vals,double(I)).^2,m)./2),3);
ご覧のとおり、これは私の実際の機能であり、私が提示した例よりも複雑です。しかし、考え方は同じです。2 つの配列の差の指数関数の M のセットの 3 番目の次元で平均をとります。
それが役立つことを願っています。