Arrays 利用叶数杂散误差滤波Matlab单元阵列

Arrays 利用叶数杂散误差滤波Matlab单元阵列,arrays,matlab,select,cells,Arrays,Matlab,Select,Cells,我有一个大数据集x,由16201 x 49个单元格组成,第一行包含标签,例如: '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、2

我有一个大数据集x,由16201 x 49个单元格组成,第一行包含标签,例如:

'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的单元格组成。所有列都有重复的条目(但列之间的组合不同)。我想在单元格数组中筛选所有等于10的条目,例如“Entry4label”。 我试过:

x([x{2:end, 4}] == 10, :)
然而,这几乎是可行的,大约每二十个单元格中就有一个剩余值为40的单元格!类似地,如果我尝试使用20,我会得到10的虚假出现。如果我使用40,我会得到20的虚假出现,最后对于60,我会得到一些(但很少),40

知道发生了什么吗?

代码

out=x(find(cell2mat)(x(2:end,4))==10)+1,:)

输出

out = 

    'stimuli 1'    'stimuli 2'    [0.1]    [10]
    'stimuli 1'    'stimuli 3'    [0.1]    [10]
问题是第一个元素是第四列的字符串。

代码

out=x(find(cell2mat)(x(2:end,4))==10)+1,:)

输出

out = 

    'stimuli 1'    'stimuli 2'    [0.1]    [10]
    'stimuli 1'    'stimuli 3'    [0.1]    [10]
问题是第一个元素是第四列的字符串。

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

因为您是在列的子集中查找位置,所以它实际上是将行偏移量取1。我猜您在该列中的值大部分是在块中,偶尔会有更改,因此它看起来似乎与大多数值匹配

您可以将偏移放回:

x(查找([x{2:end,4}]==40)+1,:)
这里:
x([x{2:end,4}]==10,:)

因为您是在列的子集中查找位置,所以它实际上是将行偏移量取1。我猜您在该列中的值大部分是在块中,偶尔会有更改,因此它看起来似乎与大多数值匹配

您可以将偏移放回:

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