根据字段的值选择结构数组中的特定单元格

时间:2015-05-29 19:00:53

标签: arrays matlab data-structures

数据看起来更像是这样:

DATA = 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]},'Tr‌ial'{'correct','incorrect','incorrect','correct','correct'}); 

这只是一个例子,我还有其他字段

所以,例如,我只想处理struct中具有correct试验的单元格,所以我想选择那些单元格,我想将这些单元格存储在单独struct。我不确定我是否清楚我为此道歉。

如果我只想选择那些作为向量的方向字段的单元格,就像我在这里使用不同大小但我想只选择那些所有元素都只是“2”的向量。

谢谢

1 个答案:

答案 0 :(得分:1)

您只能使用Trial = 'Correct'过滤元素:

DATA = DATA(arrayfun(@(x) strcmp(x.Trial, 'correct'), DATA))

如果您还想仅过滤Direction = 2(所有值)的元素,那么也要这样做:

DATA = DATA(arrayfun(@(x) all(x.Direction == 2), DATA))

或者你可以像这样在一行中完成所有这些:

DATA = DATA(arrayfun(@(x) strcmp(x.Trial, 'correct') & all(x.Direction == 2), DATA))