通过批处理文件同时运行多个MATLAB实例

时间:2018-08-07 03:27:54

标签: matlab batch-file

是否可以通过批处理文件在MATLAB的不同实例中同时运行多个.m文件?我要完成的任务如下:

  1. 打开x个MATLAB实例;

  2. 让不同的实例同时运行不同的.m文件(以便可以完全利用我的CPU能力);

  3. 所有实例完成后,退出所有MATLAB。

单个批处理文件可以完成此过程吗?我之所以要使用单个批处理文件,是因为我想在我的MATLAB脚本中调用此批处理文件。本质上,我想进行并行计算。 (由于我的某些脚本必须与没有并行计算工具箱的MATLAB 2007一起运行,因此我必须找到解决方法。)

由于我对命令提示符了解甚少,请解释一下代码的语法。

目前,我只知道如何按顺序执行任务,就像下面显示的代码一样。

cd "C:\My_MATLAB_folder_path"

matlab r- "mfile01;exit"

matlab r- "mfile02;exit"

...

matlab r- "mfilexx;exit"

如果命令提示符无法完成此过程,我可以使用哪些替代方法?重要的一点是,无论使用哪种方法,都必须能够在MATLAB脚本中调用它。

1 个答案:

答案 0 :(得分:0)

当CMD从批处理文件执行命令或程序时,它等待启动的程序退出,然后执行下一条命令。为了解决这个问题,您可以在每次调用MATLAB的前面加上启动命令:start "" matlab r- "mfilexx;exit"

在MATLAB调用之间稍加延迟可能是防止硬盘承受过度压力的好主意。

因此可以通过以下方式完成任务:

@echo off
setlocal

REM Delay is in seconds after /t switch
set "delay=timeout /t 1 /nobreak >nul"
REM Or this for Windows XP: (Delay is in milliseconds after -w switch)
set "delay=ping -n 1 -w 1000 127.255.255.255 >nul"

cd /d "C:\My_MATLAB_folder_path"

start "" matlab -r "this.m;exit"
%delay%

start "" matlab -r "that.m;exit"
%delay%
...

或者,也可以通过以下方式简化批处理脚本来简化操作:

cd /d "C:\My_MATLAB_folder_path"
for %%A in (
    "this.m"
    "that.m"
    "other.m"
    "add each file in a new line or on the same line separated with space.m" "one another.m"
) do (
    start "" matlab -r "%%~A;exit"
    %delay%
)