运行使用多个MATLAB会话的脚本

时间:2013-08-13 08:53:29

标签: matlab parallel-processing

如何在几个MATLAB会话中自动调用具有简单输入的函数?

手动方式是:

  • 开三个会话
  • 致电magic(t) t分别为1,2或3

所以,我的问题是:我怎样才能以编程方式完成这一切?

如果它是相关的,我不想使用并行处理工具箱。


请注意,我不认为parfor循环可以做我想要的。首先需要并行处理工具箱,其次我希望能够在其中一个操作失败后立即进行调试,而不会打扰其他会话。

2 个答案:

答案 0 :(得分:2)

首先必须找到以编程方式打开会话的方法。 基于thisthis,您可以按照以下方式执行此操作(也适用于Windows):

% Opening 3 matlab sessions
for t = 1:3
!matlab &
end

除了简单地打开它们之外,还可以给出一个简单的命令

!matlab -r "magic(5)" &

现在,最后结合这只是一个小技巧仍然存在:

for t = 1:3
   str = ['!matlab -r "magic(' num2str(t) ')" &'];
   eval(str)
end

请注意,如果要使用更复杂的输入,只需将它们保存在结构中,然后使用包装脚本作为被调用函数,使用此索引调用它们。

答案 1 :(得分:1)

你可以试试Multicore,它使用Matlab的几个实例通过公共目录传递信息来做parfor所做的事情。如果你可以重写你的代码循环来调用一个返回值的函数,那么多核可能会做你想要的。

http://www.mathworks.com/matlabcentral/fileexchange/13775-multicore-parallel-processing-on-multiple-cores