Automatically Assigning base workspace variables
8 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Abhijit
le 24 Sep 2013
Modifié(e) : David Arriola
le 9 Oct 2014
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 commentaires
Image Analyst
le 24 Sep 2013
OK - I don't have Simulink. I added it to the product list for you so others will know.
Réponse acceptée
Walter Roberson
le 24 Sep 2013
Avoid doing that. For example create only a single struct and assignin() the struct.
6 commentaires
Plus de réponses (1)
David Arriola
le 9 Oct 2014
Modifié(e) : David Arriola
le 9 Oct 2014
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 commentaires
Voir également
Catégories
En savoir plus sur Startup and Shutdown dans Help Center et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!