Copy of one field of a structured array
Show older comments
Is there a way to make a copy of one field of a structured array without doing a loop? I have tried but it just results in the first element.
Creation of sample structure
for i=1:5
A(i).A = i;
A(i).B = i+10;
end
>>C = A.B
C =
11
Likewise
>> C = A(1:3).B
C =
11
instead of C(1).B = 11, C(2).B = 12, and C(3).B = 13 like I want.
Accepted Answer
More Answers (2)
the cyclist
on 12 Mar 2013
Edited: the cyclist
on 12 Mar 2013
Yet another way:
[C(1:numel(A)).B] = A.B;
Note that this method will not overwrite other fields of C, if they exist. Some of the methods in other answers will, so be cautious!
2 Comments
per isakson
on 12 Mar 2013
Edited: per isakson
on 12 Mar 2013
The two functions, struct and cell2struct, create a new struct and overwrite an existing C.
I'll try to remember that numel(A) in the rhs-expression creates a new struct if C does not exist. And I'll reread the entry on deal in the documentation.
John Petersen
on 13 Mar 2013
Azzi Abdelmalek
on 12 Mar 2013
C=struct('B',{A.B})
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!