필터 지우기
필터 지우기

Extracting data from struct as array

조회 수: 7 (최근 30일)
Rashi Monga
Rashi Monga 2024년 6월 13일
편집: Rashi Monga 2024년 6월 13일
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

채택된 답변

Stephen23
Stephen23 2024년 6월 13일
편집: Stephen23 2024년 6월 13일
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>

추가 답변 (1개)

Ganesh
Ganesh 2024년 6월 13일
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
Rashi Monga
Rashi Monga 2024년 6월 13일
편집: Rashi Monga 2024년 6월 13일
Hi everyone,
Thank you. It was very helpful.
Ganesh
Ganesh 2024년 6월 13일
% After using vertcat
y = y(:,1:5);

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Structures에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by