concatenate structs in a loop
8 views (last 30 days)
Show older comments
I have a 1x7 struct, each containing the same number of rows but differing number of columns. I want to concatenate each struct into a new matrix but was wondering if I can do this in a loop?
For example, A is a 1x7 struct containing data B. I essentially want to do:
cat(2,A(1,1).B, A(1,2).B, A(1,3).B, A(1,4).B, A(1,5).B, A(1,6).B, A(1,7).B)
but in a loop. Is this possible? Thanks in advance.
Accepted Answer
Matt Fig
on 6 May 2011
A 1-by-n structure, where the data in each n has the same number of rows but different number of columns:
A(1,1).B = [5.5 4.5;5.5 4.5];
A(1,2).B = [6.3 4.3 3.3;6.3 4.3 3.3];
A(1,3).B = [7.1 2.1 3.1 4.1;7.1 2.1 3.1 4.1];
Here is one way to do it in a loop:
G = cell(1,length(A));
for ii = 1:length(A)
G{ii} = A(ii).B;
end
G = [G{:}];
Or, simply (as Walter also pointed out):
G2 = cat(2,A(:).B); % isequal(G,G2)==1
0 Comments
More Answers (1)
Paulo Silva
on 6 May 2011
for n=1:size(A,1)
s{n}=cat(2,A(n,1).B, A(n,2).B, A(n,3).B, A(n,4).B, A(n,5).B, A(n,6).B, A(n,7).B);
end
See Also
Categories
Find more on Structures in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!