Extracting data from struct as array

4 Ansichten (letzte 30 Tage)
Rashi Monga
Rashi Monga am 13 Jun. 2024
Bearbeitet: Rashi Monga am 13 Jun. 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

Akzeptierte Antwort

Stephen23
Stephen23 am 13 Jun. 2024
Bearbeitet: Stephen23 am 13 Jun. 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>

Weitere Antworten (1)

Ganesh
Ganesh am 13 Jun. 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 Kommentare
Rashi Monga
Rashi Monga am 13 Jun. 2024
Bearbeitet: Rashi Monga am 13 Jun. 2024
Hi everyone,
Thank you. It was very helpful.
Ganesh
Ganesh am 13 Jun. 2024
% After using vertcat
y = y(:,1:5);

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Structures finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by