Assign elements in multidimensional struct to 2D array

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 Comments

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)
This was exactly what I was looking for, thank you

Sign in to comment.

 Accepted Answer

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

More Answers (0)

Categories

Tags

Asked:

on 14 Sep 2022

Commented:

on 14 Sep 2022

Community Treasure Hunt

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

Start Hunting!