How can I vectorize copying one struct to another?
6 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Ali1373
am 27 Jun. 2018
Kommentiert: Csaba Csupernyák
am 20 Jul. 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 Kommentare
Akzeptierte Antwort
Guillaume
am 27 Jun. 2018
Bearbeitet: Guillaume
am 27 Jun. 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 Kommentare
Csaba Csupernyák
am 20 Jul. 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?
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Cell Arrays finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!