how to concatenate structure fields
이전 댓글 표시
Hello I have a structure s(i).f(j).d where i=1:40 and j=1:10.I want to concantenate all the fields in to one single matrix. for eg
for j=1:10
m(:,j)=s(1).f(j).d
with the following code above
this concatenates 10 column matrix into m .But this is just for s(1) how to proceed for s1..s2...s40 for all the 40 fields?
채택된 답변
추가 답변 (1개)
Guillaume
2016년 7월 15일
Use a double for loop, then:
m = zeros(numel(s(1).f(1).d), numel(s(1).f(1)), numel(s)); %preallocation is advised
for sidx = 1:numel(s)
for fidx = 1:numel(s(sidx).f)
m(:, fidx, sidx) = s(sidx).f(fidx).d;
end
end
Note that I've concatenated the s1, ... s40 along the 3rd dimension. You didn't specify what you wanted exactly.
댓글 수: 2
Guillaume
2016년 7월 15일
Whichever shape you want for the output, the idea is still the same. Iterate over both arrays. To get the above:
m = zeros(numel(s(1).f(1).d, numel(s) * numel(s(1).f));
col = 1;
for sidx = 1 : numel(s)
for fidx = 1 : numel(f)
m(:, col) = s(sidx).f(idx).d;
col = col + 1;
end
end
카테고리
도움말 센터 및 File Exchange에서 Structures에 대해 자세히 알아보기
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
