To convert a variable (struct with fields of numeric matrix) to a sliced variable (an array of struct)
Mostrar comentarios más antiguos
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 comentarios
Edric Ellis
el 21 de Feb. de 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)
Owen Zhang
el 25 de Feb. de 2019
Respuesta aceptada
Más respuestas (0)
Categorías
Más información sobre MATLAB en Centro de ayuda y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!