如何切片结构数组?

时间:2011-12-25 19:21:38

标签: arrays matlab multidimensional-array slice

如何从Matlab结构数组的每个元素中提取特定字段?

>> clear x
>> x(1).a = 6;
>> x(2).a = 7;

我想要一个包含6和7的数组。x(:).ax.a都不能做我想要的。

>> x(:).a

ans =    

     6


ans =

     7

4 个答案:

答案 0 :(得分:9)

没问题 - 只需使用:

arr = [x.a];

它将连接您需要的所有值。 如果您有更复杂的数据,可以使用大括号:

b(1).x = 'John';
b(2).x = 'Doe';
arr = {b.x}; 

答案 1 :(得分:0)

可悲的是,我几乎可以肯定MATLAB没有办法做你想做的事。您必须使用for循环来构造新数组,否则返回并重新设计数据结构。例如,您可以使用数组结构而不是结构数组。

答案 2 :(得分:0)

对于多维数组,您需要

reshape([x.a], size(x))

答案 3 :(得分:0)

如果struct的元素是字符串,则接受的解决方案将所有单元格连接在一起。 更一般

vertcat(x.a)

在所有情况下均有效。 Ref