To convert a variable (struct with fields of numeric matrix) to a sliced variable (an array of struct)
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Owen Zhang
am 21 Feb. 2019
Beantwortet: Owen Zhang
am 25 Feb. 2019
I was doing code refactor to apply parfor to some legacy code. Legacy code creates a big struct variable called 'Boot', with fields of numeric matrix.
I want to convert it to a new sliced variable "BootS" , but if I do the conversion like the attached image, Matlab give me warnings that I should preallocate it.
( iters means number of iterations.)
I tried to preallocate BootS as the code commented out , it fails with runtime errors.
Anyone has good idea to convert it elegantly??
2 Kommentare
Edric Ellis
am 21 Feb. 2019
There are a few possible failure modes here - please could you post a self-contained example that fails when using parfor. I tried the following in R2018b, and it worked fine, so I'm missing something:
iters = 10;
clear BootS;
BootS(iters) = struct();
parfor i = 1:iters
BootS(i).PD.sim = rand();
BootS(i).PDOS.sim = rand();
end
(I also presume you're doing some computationally intensive work in the parfor loop - simply reformatting data in this way using parfor is highly unlikely to gain you any performance advantage)
Akzeptierte Antwort
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Structures finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!