是否可以通过批处理文件在MATLAB的不同实例中同时运行多个.m文件?我要完成的任务如下:
打开x个MATLAB实例;
让不同的实例同时运行不同的.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脚本中调用它。
答案 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%
)