从Java调用MATLAB的回调/功能手柄(Calling matlab callback/func

2019-07-28 20:50发布

我如何通过一个MATLAB函数句柄Java对象,并从Java内部调用它(即我希望Java告诉MATLAB,当它准备与计算)。 我试图使用com.mathworks.jmi.Matlab类为Java对象评估Matlab的表情,但我不能看到如何1)转移回调funcktion手柄到Java,和2)可能使用从Java调用它该com.mathworks.jmi.Matlab类。

谢谢,雅各布

Answer 1:

嗯。 貌似JMI是那些MATLAB内部事情,可能会在将来的版本中改变之一。 我发现,这些网上的文章,不知道他们会在你的情况有所帮助。

  • http://www.mathworks.com/matlabcentral/newsreader/view_thread/239803
  • http://www.mathworks.co.uk/matlabcentral/newsreader/view_thread/250598
  • http://www.cs.virginia.edu/~whitehouse/matlab/JavaMatlab.html


Answer 2:

我怕,我不知道的方式做你要求什么 ,但有两种方法可以做同样的事情:

1)如果你从内Matlab的设置一个Java回调,你可以把它Matlab的函数句柄。 当Java回调事件得到提高,你的MATLAB函数将被调用。 对于这方面的例子可以在这里找到: http://UndocumentedMatlab.com/blog/uicontrol-callbacks/ 。 请注意,这并不需要JMI运行。

2)JMI需要一个用于Matlab来评估串(功能名或命令行)。 如果你事先知道函数的名称,你可以使用它。 否则,你可以准备一个Matlab开关码功能(他的名字是事先知道的)来动态直接回调到适当的Matlab的行动。

我打算在运行约JMI的文章http://UndocumentedMatlab.com在四月中旬的网站,敬请期待...

亚伊尔奥特曼



Answer 3:

matlabcontrol是一个Java API,它可以让你做到这一点。 它可以通过feval调用MATLAB功能。 它不能在功能手柄直接操作,而是由KitsuneYMG提到的,你可以使用func2str一个函数句柄转换为字符串。 要开始,你可以去看看演练 。



Answer 4:

为了传递一个回调到MATLAB,你通过MATLAB函数的名称和它的参数到com.mathworks.jmi.Matlab.feval(“matlabControlcb”,......,0); 所述...是一个Object []其中[0] =命令和[1..end] =参数。

另请参见:FEVAL FUNC2STR



Answer 5:

试试这个工具: http://jamal.sourceforge.net/

它不正是你所需要的和良好的记录。

它是基于其主要原理是使RMI调用所内Matlab的运行服务器的一部分。 输出返回给Java程序。 再次,它取决于JMI ...



文章来源: Calling matlab callback/function handle from Java