2012-03-21 11 views
0

現在、関数ハンドルに大きく依存するMATLABコードを高速化するためにC言語でMEXファイルを作成しています。残念ながら、mexCallMATLABを使用してMATLABのハンドルを評価する必要があるため、私のMEXファイルは遅く実行されます(here)。mexCallMATLAB関数なしでMEXファイルでMATLAB関数ハンドルを使用する方法はありますか

ほとんどの関数ハンドルは、均一な乱数をとり、ランダム変数を生成する簡単なインライン関数です。典型的な例は次のとおりです。

f = @(u) exp(norminv(u)) 

機能が使用組み込みのMATLAB関数を処理したとしても、私のコードは、ユーザーがハードMEXファイルに関数をコーディングから私を防ぎ、独自の関数ハンドルを、使用することを許可する必要があります。

理想的には、mexCallMATLAB関数を毎回使用することなく、この関数ハンドルを評価する方法をMEXファイルに提供したいと考えています。どのようにしてそのようなことができるのか誰にも分かりますか?私はあなたが持っている可能性のある任意の提案にオープンです。

答えて

1

私が知る限り、これが唯一の方法です。速度を助ける方法は、一度呼び出すことです。必要な値のベクトルを送信し、返されたベクトルをmexファイルで使用します。

+0

私はこれを考えましたが、この正確な状況では機能しません。 MATLABに関数ハンドルからCコードを生成させ、何らかの形でそれらをMEXファイルに含める/参照させることは可能でしょうか? –

+0

これはmatlabコンパイラで行うことができます。私はそれを使ったことがない(それを所有していない)が、あなたが必要とするものを手助けするようだ - http://www.mathworks.com/support/tech-notes/1600/1622.html –

関連する問題