Extracting data from struct as array

8 vues (au cours des 30 derniers jours)
Rashi Monga
Rashi Monga le 13 Juin 2024
Modifié(e) : Rashi Monga le 13 Juin 2024
Hi, I have a following structure:
S(1).a = 1:10;
S(2).a = 11:20;
S(3).a = 21:30;
I want the output in the following format:
y = [1:10; 11:20; 21:30];
Using [S(1:3).a] concatenates it in a single direction. Is there a better way (other than for loop) to extract the data in the requisite format?
Thank you,
Rashi

Réponse acceptée

Stephen23
Stephen23 le 13 Juin 2024
Modifié(e) : Stephen23 le 13 Juin 2024
S(1).a = 1:10;
S(2).a = 11:20;
S(3).a = 21:30;
M = vertcat(S.a)
M = 3x10
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
or
M = cat(1,S.a)
M = 3x10
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>

Plus de réponses (1)

Ganesh
Ganesh le 13 Juin 2024
You can use "vertcat()" for using the same. Refer to the following code:
% Your structure
S(1).a = 1:10;
S(2).a = 11:20;
S(3).a = 21:30;
% Extracting and concatenating
y = vertcat(S.a); % This works directly because of how MATLAB handles struct arrays
y
y = 3x10
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
For more information on the function "vertcat()", refer to the following documentation:
  2 commentaires
Rashi Monga
Rashi Monga le 13 Juin 2024
Modifié(e) : Rashi Monga le 13 Juin 2024
Hi everyone,
Thank you. It was very helpful.
Ganesh
Ganesh le 13 Juin 2024
% After using vertcat
y = y(:,1:5);

Connectez-vous pour commenter.

Catégories

En savoir plus sur Structures dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by