Fill structure in parallel loop

9 views (last 30 days)
soepblik
soepblik on 9 Sep 2021
Answered: Edric Ellis on 10 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!

Answers (1)

Edric Ellis
Edric Ellis on 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]

Categories

Find more on Parallel for-Loops (parfor) in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!