Fill structure in parallel loop

조회 수: 7 (최근 30일)
soepblik
soepblik 2021년 9월 9일
답변: Edric Ellis 2021년 9월 10일
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!

답변 (1개)

Edric Ellis
Edric Ellis 2021년 9월 10일
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]

카테고리

Help CenterFile Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by