Assign elements in multidimensional struct to 2D array

7 vues (au cours des 30 derniers jours)
Collin
Collin le 14 Sep 2022
Commenté : Collin le 14 Sep 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 commentaires
Stephen23
Stephen23 le 14 Sep 2022
Modifié(e) : Stephen23 le 14 Sep 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 le 14 Sep 2022
This was exactly what I was looking for, thank you

Connectez-vous pour commenter.

Réponse acceptée

James Tursa
James Tursa le 14 Sep 2022
Modifié(e) : James Tursa le 14 Sep 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

Plus de réponses (0)

Catégories

En savoir plus sur Structures dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by