【发布时间】:2013-06-14 14:08:13
【问题描述】:
我有一个 Simulink 模型,在开始之前,执行一个脚本(在回调中)(让我们调用脚本constants.m)来设置基础工作区中的各种常量和参数。现在,我希望 Simulink 模型使用各种常量和参数集(即有多个文件,constants1.m、constants2.m 等)执行,这样就无需每次在运行前手动更改相同的脚本Simulink 模型。
我能够设置一个脚本 (batchProcessing.m),它可以多次加载、执行和关闭模型。但是,我想让所有作业同时在不同的内核上运行(我有一个 12 核的 Xeon CPU)。如果没有并行工具箱,是否可以做到这一点?是否可以使用批处理脚本 (.bat)?
更新:
这是我在macduff 答案的帮助下尝试过的:
我的测试功能:
function test3(n, ii)
A = rand(n);
B = rand(n);
tic; C=A*B;
tableTitle = {'Resultat'};
fileID = fopen(strcat('D:\Documents\MATLAB', '\', 'batchResults', num2str(ii), '.txt'),'w');
fprintf(fileID, '%12s\n', tableTitle{1});
fprintf(fileID, '%12.5f\n',C(1:10));
fclose(fileID);
toc
end
.bat 文件:
set MATLAB_EXE_PATH = "C:\MATLAB\R2010a\bin\matlab.exe"
start /MIN /LOW "MATLAB" "%MATLAB_EXE_PATH%" -nosplash -nodesktop -r "test3('%100%','%1');"
start /MIN /LOW "MATLAB" "%MATLAB_EXE_PATH%" -nosplash -nodesktop -r "test3('%100%','%2');"
什么都没有发生,并且 .txt 没有被创建。如果我直接在 Matlab 中运行 test3 函数,它可以正常工作。所以问题出在批处理文件上。
更新为正确答案
再次,在macduff 答案的帮助下,我做了什么:
set MATLAB_EXE_PATH=C:\MATLAB\R2010a\bin\matlab.exe
set arg1=5000
set arg2=1
start /MIN /LOW %MATLAB_EXE_PATH% -nodesktop -nosplash -r "cd('D:\Documents\MATLAB\'); test3(%arg1%,%arg2%); exit;"
set arg2=2
start /MIN /LOW %MATLAB_EXE_PATH% -nodesktop -nosplash -r "cd('D:\Documents\MATLAB\'); test3(%arg1%,%arg2%); exit;"
现在,如果 Matlab 窗口可以保持关闭而不在屏幕上弹出,那就太好了。
【问题讨论】:
标签: matlab batch-file parallel-processing simulink