问题
How can I extract a specific field from each element of a Matlab struct array?
>> clear x
>> x(1).a = 6;
>> x(2).a = 7;
I'd like an array containing 6 and 7. Neither x(:).a
nor x.a
do what I want.
>> x(:).a
ans =
6
ans =
7
回答1:
No problem - just use :
arr = [x.a];
It will concat all of the values that you need. If you have a more complex data, you can use the curly bracers:
b(1).x = 'John';
b(2).x = 'Doe';
arr = {b.x};
回答2:
For a multi-dimensional array, you need
reshape([x.a], size(x))
回答3:
Sadly, I am almost sure that MATLAB has no nice way of doing what you want. You will have to either use a for loop to construct a new array, or else go back and redesign your data structures. For example you might be able to use a struct-of-arrays rather than an array-of-structs.
来源:https://stackoverflow.com/questions/8631136/how-to-slice-a-struct-array