Assign elements in multidimensional struct to 2D array

7 visualizaciones (últimos 30 días)
Collin
Collin el 14 de Sept. de 2022
Comentada: Collin el 14 de Sept. de 2022
I have a 1xN multidimenstional struct, where each entry contains data of size 1xM.
for ii=1:5, C(ii).pts = rand(1,3); end
I would like an elegant way to get an NxM array as a concatinated output of the struct. Is this possible?
% Returns of size 1xMN
[C.pts]
% Will not run but get something like this of size NxM
[c.pts']
Relevant questions:
https://www.mathworks.com/matlabcentral/answers/7155-elegant-way-to-extract-part-of-a-structure-as-an-array
  2 comentarios
Stephen23
Stephen23 el 14 de Sept. de 2022
Editada: Stephen23 el 14 de Sept. de 2022
You are not limited to only using square brackets for concatenation, you can use a comma-separated list with any operator or function that accepts those input arrays:
cat(1,C.pts)
vertcat(C.pts)
Collin
Collin el 14 de Sept. de 2022
This was exactly what I was looking for, thank you

Iniciar sesión para comentar.

Respuesta aceptada

James Tursa
James Tursa el 14 de Sept. de 2022
Editada: James Tursa el 14 de Sept. de 2022
You can use the vercat( ) function to force the comma-separated-list generated by C.pts to stack vertically:
for ii=1:5, C(ii).pts = rand(1,3); end
vertcat(C.pts)
ans = 5×3
0.5913 0.0767 0.8684 0.9742 0.6071 0.1215 0.7279 0.3782 0.8562 0.0783 0.6597 0.9261 0.9670 0.2707 0.2494

Más respuestas (0)

Categorías

Más información sobre Structures en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by