How can I vectorize copying one struct to another?
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Ali1373
el 27 de Jun. de 2018
Comentada: Csaba Csupernyák
el 20 de Jul. de 2020
I have
p.Results.events(i)
ans =
struct with fields:
message: {16×1 cell}
time: [16×1 uint32]
and
obj.data{1}
ans =
1×70 struct array with fields:
gx
gy
time
events
where for example
obj.data{1}(1).gx(1:10)
ans =
532.4000 532.3000 532.2000 531.8000 531.1000 530.2000 528.9000 527.6000 527.3000 527.9000
I was able to do this using
[obj.data{1}.gx] = p.Results.x{:};
[obj.data{1}.gy] = p.Results.y{:};
[obj.data{1}.time] = p.Results.time{:};
for i = 1:70
obj.data{1}(i).events = p.Results.events(i);
end
It seems like in theory, copying the struct should be the easiest to vectorize but I've hit a wall. If it helps, I know exactly what the fields of events should be.
0 comentarios
Respuesta aceptada
Guillaume
el 27 de Jun. de 2018
Editada: Guillaume
el 27 de Jun. de 2018
events = num2cell(p.Results.events); %convert array to cell array so that it can then be converted to comma separated list
[obj.data{1}.events] = events{:}; %expand cell array into comma separated list and deal into outputs
However, your hierarchy of non-scalar structure within a cell array within a structure can easily be confusing to the reader of your code. You may want to simplify that a bit.
5 comentarios
Csaba Csupernyák
el 20 de Jul. de 2020
@Guillaume, could you please explain more elaborately why do you need to convert the array of a field into a cell array, and then put the target field into square brackets?
Más respuestas (0)
Ver también
Categorías
Más información sobre Cell Arrays en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!