从struct数组中提取特定字段的所有值

时间:2015-12-02 14:05:03

标签: octave

如果我有一个类似

的数组
 A = [
   struct( 'uid', 165215, 'type', 8, 'data', [0,3,16388,17523,12,225,225,280,242,223,256,266,261,226,225,259,210]);
   struct( 'uid', 196334, 'type', 2, 'data', [0,96,398,359,350,4,416,406,450,39]);
   % ...
   struct( 'uid', 173261, 'type', 8, 'data', [0,13,5081,5658,48]);
 ];

有没有办法提取所有'类型'成员自己的Nx1矩阵? 类似的东西:

b = A(:).type; % this only returns "b = 8"

甚至更复杂地对成员应用逻辑运算符并获得答案向量:

I = A(:).type==1;

这引发:

error: binary operator '==' not implemented for 'cs-list' by 'scalar' operations

1 个答案:

答案 0 :(得分:3)

与您使用的索引操作类似的索引操作会返回一个cs-list(在matlab中称为逗号分隔变量)。要将其转换为数组或单元格数组,请在其周围放置相应的括号:

 b = [A(:).type] ;

上面的行创建了一个数组,如果你需要一个单元格,在其他情况下使用{}代替。您将需要它来索引数据。

相关问题