有没有办法从外部调用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(使用前将#替换为@)