我如何通过一个MATLAB函数句柄Java对象,并从Java内部调用它(即我希望Java告诉MATLAB,当它准备与计算)。 我试图使用com.mathworks.jmi.Matlab类为Java对象评估Matlab的表情,但我不能看到如何1)转移回调funcktion手柄到Java,和2)可能使用从Java调用它该com.mathworks.jmi.Matlab类。
谢谢,雅各布
我如何通过一个MATLAB函数句柄Java对象,并从Java内部调用它(即我希望Java告诉MATLAB,当它准备与计算)。 我试图使用com.mathworks.jmi.Matlab类为Java对象评估Matlab的表情,但我不能看到如何1)转移回调funcktion手柄到Java,和2)可能使用从Java调用它该com.mathworks.jmi.Matlab类。
谢谢,雅各布
嗯。 貌似JMI是那些MATLAB内部事情,可能会在将来的版本中改变之一。 我发现,这些网上的文章,不知道他们会在你的情况有所帮助。
我怕,我不知道的方式做你要求什么 ,但有两种方法可以做同样的事情:
1)如果你从内Matlab的设置一个Java回调,你可以把它Matlab的函数句柄。 当Java回调事件得到提高,你的MATLAB函数将被调用。 对于这方面的例子可以在这里找到: http://UndocumentedMatlab.com/blog/uicontrol-callbacks/ 。 请注意,这并不需要JMI运行。
2)JMI需要一个用于Matlab来评估串(功能名或命令行)。 如果你事先知道函数的名称,你可以使用它。 否则,你可以准备一个Matlab开关码功能(他的名字是事先知道的)来动态直接回调到适当的Matlab的行动。
我打算在运行约JMI的文章http://UndocumentedMatlab.com在四月中旬的网站,敬请期待...
亚伊尔奥特曼
matlabcontrol是一个Java API,它可以让你做到这一点。 它可以通过feval调用MATLAB功能。 它不能在功能手柄直接操作,而是由KitsuneYMG提到的,你可以使用func2str一个函数句柄转换为字符串。 要开始,你可以去看看演练 。
为了传递一个回调到MATLAB,你通过MATLAB函数的名称和它的参数到com.mathworks.jmi.Matlab.feval(“matlabControlcb”,......,0); 所述...是一个Object []其中[0] =命令和[1..end] =参数。
另请参见:FEVAL FUNC2STR
试试这个工具: http://jamal.sourceforge.net/
它不正是你所需要的和良好的记录。
它是基于其主要原理是使RMI调用所内Matlab的运行服务器的一部分。 输出返回给Java程序。 再次,它取决于JMI ...