How to Convert a Scalar Struct with Vector Fields to a Vector Struct with Scalar Fields?
조회 수: 5 (최근 30일)
이전 댓글 표시
I have a scalar struct S with each field a row vector of the same number of elements.
S.x = [1 2];
S.y = [10 20];
I want create a struct array, A, with same number of elements as in the fields in S, with the same field names as S, where each field value in each element of A is correspondingly indexed from the original field in S. I'm not sure I'm explaining this well.
So far I have this, which works:
C = [fieldnames(s) , arrayfun(@(c) mat2cell(c{1},1,ones(1,numel(c{1}))),struct2cell(s),'Uni',false)].';
A = struct(C{:})
[A.x]
[A.y]
Open to suggestions on better (e.g., easier to understand) alternatives.
댓글 수: 0
채택된 답변
Voss
2024년 4월 25일
S.x = [1 2];
S.y = [10 20];
C = [fieldnames(S) , struct2cell(structfun(@num2cell,S,'Uni',false))].';
A = struct(C{:})
[A.x]
[A.y]
댓글 수: 0
추가 답변 (2개)
Voss
2024년 4월 25일
S.x = [1 2];
S.y = [10 20];
C = [fieldnames(S) , cellfun(@num2cell,struct2cell(S),'Uni',false)].';
A = struct(C{:})
[A.x]
[A.y]
댓글 수: 0
Voss
2024년 4월 25일
S.x = [1 2];
S.y = [10 20];
N = numel(S.x);
f = fieldnames(S);
NF = numel(f);
clear A
A(N) = S;
for ii = 1:N
for jj = 1:NF
A(ii).(f{jj}) = S.(f{jj})(ii);
end
end
A
[A.x]
[A.y]
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Data Type Conversion에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!