Add a vector to a struct array
20 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Frank
am 21 Aug. 2014
Bearbeitet: Sean de Wolski
am 22 Aug. 2014
I have a struct array, say
a(1).b=1
a(2).b=1
a(1).c=1
a(2).c=1
and an vector, say
c=[1 2]
Now I want to add vector c to a, in order to obtain something like a.c
How can I do this without a for-loop? (actually the length of the struct is not 2, but thousands)
0 Kommentare
Akzeptierte Antwort
Sean de Wolski
am 21 Aug. 2014
Bearbeitet: Sean de Wolski
am 21 Aug. 2014
You could use a for-loop (which would be the easiest to understand) and may be the fastest. Or you could use comma-separated list expansion which is trickier.
a(1).b=1
a(2).b=1
a(1).c=1
a(2).c=1
c = [pi exp(1)];
c = num2cell(c)
[a(:).c] = c{:}
a.c
Frankly, I would recommend avoiding this structure altogether. Why not have a 1x1 struct with a field c which is a 1xn?
a.c = [1 2]
a.c(2)
2 Kommentare
Sean de Wolski
am 22 Aug. 2014
Bearbeitet: Sean de Wolski
am 22 Aug. 2014
That's exactly what my first approach does! It uses comma separated list expansion (instead of a for-loop) on both the left and right hand side to distribute the elements.
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!