2015-12-02 140 views
2

提取特定字段的所有值,如果我有像从结构阵列

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 

回答

3

像一个的索引操作你使用的是返回一个cs-list(在matlab中称为逗号分隔变量)。将其转换为一个数组或单元阵列,使相应的括号它:

b = [A(:).type] ; 

线之上创建一个数组,如果你需要在其它情况下,电池使用{}代替。你将需要它来索引数据。