2014-03-12 46 views
1

我有一个大的数据集,X,由16201 X 49细胞中,第一行包含标签,例如:由数滤波matlab单元阵列离开虚假错误

'Entry1label' 'Entry2label', 'Entry3label', 'Entry4label' 
'stimuli 1' 'stimuli 2' 0.1   10 
'stimuli 1' 'stimuli 3' 0.1   10 
'stimuli 2' 'stimuli 1' 0.1   40 

第4列包括细胞与的值或者10,20,40或60.所有列都有重复的条目(但是列之间的组合不同)。我想过滤单元阵列中的所有条目,例如'Entry4标签',等于例如10. 我已经试过:

x([x{2:end, 4}] == 10, :) 

这几乎是工作,但是,大约每二单元有一个与值40的单元中留下!同样,如果我尝试了20次,我得到了10次虚假事件。如果我使用40次,我得到20次虚假事件,最后60次我得到一些(但很少),40次。

关于发生了什么的任何想法?

回答

2

代码

OUT = X(找到(cell2mat(X(2:端,4))== 10)1,:)

输出

out = 

    'stimuli 1' 'stimuli 2' [0.1] [10] 
    'stimuli 1' 'stimuli 3' [0.1] [10] 

问题在于第一个元素是第四列的字符串。

2

这里:x([x{2:end, 4}] == 10, :)

因为你发现该列的一个子集内的位置,它实际上采取的行通过一个偏移。我猜那个专栏里的你的价值主要是偶尔有变化的块,所以它看起来就好像大部分都是匹配的。

你可以把偏移回:

x(find([x{2:end, 4}]==40)+1,:)