6

matlab関数ハンドルをJavaオブジェクトに渡し、Java内から呼び出すにはどうすればよいですか(つまり、計算の準備ができたときにJavaにmatlabに通知させます)。com.mathworks.jmi.Matlabクラスを使用してJavaオブジェクトのMatlab式を評価しようとしていますが、1)コールバック関数ハンドルをJavaに転送し、2)Javaから呼び出す方法がわかりません。 com.mathworks.jmi.Matlabクラス。

ありがとう、ヤコブ

4

5 に答える 5

2

うーん。JMIは、将来のバージョンで変更される可能性のあるmatlab内部のものの1つであるように見えます。私はこれらのオンライン記事を見つけましたが、あなたの場合に役立つかどうかはわかりません。

于 2009-06-17T13:04:57.807 に答える
1

残念ながら、あなたが要求したことを正確に行う方法がわかりませんが、同様のことを行う方法が 2 つあります。

1) Matlab 内から Java コールバックを設定する場合、Matlab 関数ハンドルを送信できます。Java コールバック イベントが発生すると、Matlab 関数が呼び出されます。この例は、http: //UndocumentedMatlab.com/blog/uicontrol-callbacks/にあります。これを実行するために JMI を必要としないことに注意してください。

2) JMI は、Matlab が評価する文字列 (関数名またはコマンド ライン) を必要とします。関数名が事前にわかっていれば、それを使用できます。それ以外の場合は、コールバックを適切な Matlab アクションに動的に向けるために、Matlab スイッチ ヤード関数 (その名前は事前に知られています) を準備できます。

4 月中旬にhttp://UndocumentedMatlab.comの Web サイトでJMI に関する記事を掲載する予定ですので、お楽しみに...

ヤイル・アルトマン

于 2010-03-30T18:20:43.227 に答える
1

matlabcontrolは、それを可能にする Java API です。feval を使用して MATLAB 関数を呼び出すことができます。関数ハンドルを直接操作することはできませんが、KitsuneYMG で述べられているように、func2str を使用て関数ハンドルを文字列に変換できます。開始するには、ウォークスルーをご覧ください。

于 2011-07-08T23:55:42.110 に答える
0

このツールを試してください: http://jamal.sourceforge.net/

それはあなたが必要とすることを正確に行い、十分に文書化されています。

それが基づいている主な原則は、Matlab 内で実行されるサーバー部分への RMI 呼び出しを行うことです。出力は Java プログラムに返されます。繰り返しますが、それはjmiに依存します...

于 2010-04-19T22:13:23.633 に答える
0

コールバックを matlab に渡すには、matlab 関数の名前とその引数を com.mathworks.jmi.Matlab.feval("matlabControlcb", ... , 0); に渡します。... は Object[] で、[0] = コマンド、[1..end] = 引数です。

関連項目: FEVAL FUNC2STR

于 2010-03-29T13:42:43.567 に答える