在具有特定条件的结构中选择单元格

时间:2015-06-01 05:37:43

标签: arrays matlab struct

数据看起来更像是这样:

T = struct('Direction',
           {[1,1,1,1],[1,1,2,1],[2,2,2,2,2],
            [2,2,2,2,1,2], [2,2,2,2,2],[3,1,4,5]},
           'Tr‌ial', 
           {'correct','incorrect','incorrect','correct','correct','incorrect'}); 

这只是一个例子,我还有其他领域

T = T(arrayfun(@(x) all(x.Direction == 2), T)); 

我已经有上面的代码可以正常工作,但它只给我[2,2,2,2,2]并且它没有给我[2,2,2,2,1,2]的单元格,因为它也有1.

我尝试使用<= 2,但它也包含[1,1,1,1],[1,1,2,1]。有没有办法做到这一点?我想得到两件事:

  1. 包含ALL 2 OR ALL 1的单元格,允许最多一个元素 那是不同的,所以我可以得到[2,2,2,2,2],[2,2,2,2,1,2] 不像我的代码只提供[2,2,2,2,2]
  2. 包含随机数的单元格
  3. 我非常感谢你的帮助。

    谢谢

1 个答案:

答案 0 :(得分:0)

您可以将条件更改为

sum( x.Direction == 2 ) + 1 >= numel( x.Direction )

即使其中一个元素为true

,也应返回1