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