通过外部应用程序调用函数,无需打开新的 Matlab 实例

2024-01-07

有没有办法从外部调用Matlab函数,特别是通过Windowscmd(还有 Linux 终端、LUA 脚本等...),而不需要每次都打开一个新的 Matlab 实例?

例如在cmd:

matlab -sd myCurrentDirectory -r "function(parameters)" -nodesktop -nosplash -nojvm

打开 Matlab 的新实例相对较快并执行我的函数。打开和关闭这个简化的 matlab 提示符大约需要 2 秒(没有计算) - 因此 4000 次执行需要 2 个多小时。我想避免这种情况,因为被调用的函数始终位于同一工作区中。是否可以始终在同一个实例中完成?

我已经做了一些研究并发现了可能性MATLAB COM 自动化服务器 http://www.mathworks.de/de/help/matlab/call-matlab-com-automation-server.html,但这对我来说似乎相当复杂,而且我没有看到使其适用于我的情况的基本步骤。对此有何建议?

我不熟悉c/c++/c#但我正在考虑使用python(但只是在最坏的情况下)。


基于 @Ilya Kobelevskiy 的不起作用但经过深思熟虑的想法,这里是最终的解决方法:

 function pipeConnection(numIterations,inputFile)

 for i=1:numIterations

 while(exist('inputfile','file'))

     load inputfile;
     % read inputfile -> inputdata
     output = myFunction(inputdata);

     delete('inputfile');
 end

 % Write output to file
 % Call external application to process output data
 % generate new inputfile 

 end;

另一个方便的解决方案是编译 Matlab 函数的可执行文件:

mcc -m myfunction

运行这个.exe- 文件使用cmd:

cd myCurrentDirectory && myfunction.exe parameter1 parameter2

请注意,参数现在作为字符串和原始参数传递.m- 文件需要考虑到这一点进行调整。

进一步说明:

  • 我想Matlab仍然需要安装在系统上,不过 没有必要运行它。
  • 我不知道这种方法分别限制了多大程度的复杂性 底层函数。
  • 与问题中给出的初始方法相比,加速是 相对较小
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过外部应用程序调用函数,无需打开新的 Matlab 实例 的相关文章

随机推荐