Fill structure in parallel loop

10 vues (au cours des 30 derniers jours)
soepblik
soepblik le 9 Sep 2021
I have the following structure:
The company structure consist out of 3 fields
  • old
  • new
  • feature
these 3 fields are also structures and consists out 11 fields
These 11 fields have dimensions of 45*60.
There are 45 companies. So each company is filling a line in each field from the old,new,feature.
These fields are filled now as follows:
for i = 1:amount
company = FillFields(company)
end
If i make it a parfor loop then this construction will not work.
But i don't now how to easily make it work with a parfor loop?
Thanks in advance!

Réponses (1)

Edric Ellis
Edric Ellis le 10 Sep 2021
The main constraint here is the parfor "sliced output" requirement. Basically you cannot directly update a single struct using parfor, but you can use parfor to assemble the fields separately, and then put them together into a struct afterwards. For example:
parfor i = 1:7
name{i} = sprintf('name %d', i);
value(i) = randi(10);
end
result = struct('name', {name}, 'value', {value})
result = struct with fields:
name: {'name 1' 'name 2' 'name 3' 'name 4' 'name 5' 'name 6' 'name 7'} value: [6 4 7 2 5 10 3]

Catégories

En savoir plus sur Loops and Conditional Statements dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by