How to access all elements within a structured cell array without looping?
Show older comments
I have a variable that look like this:
a_structure{1}.field1=vector1;
a_structure{2}.field1=vector2;
a_structure{3}.field1=vector3;
Without looping, how do I obtain the matrix that puts vector1 in column 1, vector2 in column 2 and vector3 in column 3?
Note: The {} in there is intentional. I am not using the structure(1).field1 syntax. I could get there, but would have thousands of lines of code to change.
Accepted Answer
More Answers (1)
"I am not using the structure(1).field1 syntax"
You should be. It would allow you to use efficient syntaxes for accessing your data (i.e. like you are asking about now):
If all of the structures in the cell array have the same fields and have compatible sizes, then you can concatenate them together, e.g. where C is your cell array:
S = [C{:}]; % concatenate unfortunate cell of structs into better non-scalar structure.
M = [S.field1] % concatenate field1 vectors [S(1).field1,S(2).field1,S(3).field1,...]
Read more:
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!