matlab - 在不打开 Matlab 新实例的情况下通过外部应用程序调用函数

标签 matlab batch-file lua cmd function-calls

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

例如在 cmd 中:

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

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

我已经做了一些研究,发现了 MATLAB COM Automation Server 的可能性,但对我来说似乎很复杂,而且我看不到使其适用于我的案例的基本步骤。有什么建议吗?

我不熟悉 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

使用 cmd 运行此 .exe 文件:

cd myCurrentDirectory && myfunction.exe parameter1 parameter2

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

进一步说明:

  • 我想 Matlab 仍然需要安装在系统上,不过 没有必要运行它。
  • 我不知道这种方法的复杂性分别有多大限制 基础功能。
  • 与问题中给出的初始方法相比的加速是 相对较小

关于matlab - 在不打开 Matlab 新实例的情况下通过外部应用程序调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18781803/

相关文章:

lua gsub %b <-- 这是如何工作的?

c# - 南希 (C#) : How do I get my post data?

Lua 尝试调用一个 nil 值的方法

Matlab:什么更快?是否预定义有用的对象?

image - RGB 图像的 Matlab 低通滤波器

Windows批处理FOR循环范围通过命令行

windows - 单击关闭按钮关闭批处理脚本时如何运行批处理命令

java - Java 中的 MATLAB 平滑函数

matlab - MATLAB 可以检索在线数据吗?

batch-file - 批处理文件内的批处理文件 - 调用函数未执行