我有一个 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 窗口可以保持关闭而不在屏幕上弹出,那就太好了。