首页 文章

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

提问于
浏览
1

有没有办法通过批处理文件同时在不同的MATLAB实例中运行多个.m文件?我想完成的任务如下:

  • 打开MATLAB的x实例;

  • 让不同的实例同时运行不同的.m文件(这样可以完全利用我的CPU功率);

  • 当所有实例完成后,退出所有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

    当CMD从批处理文件执行命令或程序时,它等待启动的程序退出,然后执行下一个命令 . 为了解决这个问题,您可以使用start命令为每次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%
    )
    

相关问题