Automatically Assigning base workspace variables
18 次查看(过去 30 天)
显示 更早的评论
I have almost 250 variables that I need to assign in the base workspace inside a PARFOR loop. Is there an automated way of doing this other than writing assignin('base','var',var) for each variables?
4 个评论
Image Analyst
2013-9-24
OK - I don't have Simulink. I added it to the product list for you so others will know.
采纳的回答
Walter Roberson
2013-9-24
Avoid doing that. For example create only a single struct and assignin() the struct.
更多回答(1 个)
David Arriola
2014-10-9
编辑:David Arriola
2014-10-9
I have a similar problem to the one described above. I tried the solution proposed by Abhijit but I always get the following error: - Can somebody help me to get this right?
"It is illegal to use a Composite within the body of a parfor loop
Caused by: Error using distcomp.remoteparfor (line 72) Composite objects cannot be used within a parfor loop."
My code can be seen below:
list = who;
N = length(list);
for j = 1:N
w{j} = eval(list{j});
end
spmd
% Setup tempdir and cd into it
addpath(pwd);
currDir = pwd;
addpath(currDir);
tmpDir = tempname;
mkdir(tmpDir);
cd(tmpDir);
end
%Set parameter values with reduced comb. matrix and simulate all combs.
parfor m = 1:1:num_comb_red
load_system(uParam.sysInfo.modelName); % Load the model parameters on the workers
for j = 1:N
assignin('base',list{j}, w{j});
end
for n = 1:1:num_input_param
num_value_red = cell2mat(comb_red(n,m));
path = cell2mat(uParam.uncertainties.all{n,1});
para_name = uParam.uncertainties.all{n,2};
para_value = uParam.uncertainties.all{n,3}(num_value_red);
set_param(path,para_name,num2str(para_value));
end
%Simulate model for all uncertainty combinations and all temperatures
disp('Simulating linear model...')
simOut(i,m) = sim(uParam.sysInfo.modelName,'SimulationMode', uParam.simInfo.simMode, 'StopTime', uParam.simInfo.simTime);
disp('finished')
end
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Startup and Shutdown 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!