2014-02-27 50 views
0

我有一个3000x1 cell不同长度的向量数组,并且正在寻找一种方法来搜索它们全部的数字,并返回cell索引以查找该数字的第一次和最后一次出现。搜索向量的单元阵列并返回索引

所以,我的数据是这样的:

[1] 
[1 2] 
[1 2] 
[3] 
[6 7 8 9] 
etc 

而且我想我的结果是这样的,当我搜索的号码1:

ans = 1 3 

所有指标(如[1 2 3] 1)也可以工作,但上述情况会更好。到目前为止,我无法解决任何问题。

我已经试过

cellfun(@(x) x==1, positions, 'UniformOutput', 0) 

这将返回一个逻辑阵列,有效地把我送回了起点1.我用find(cellfun...)尝试,但此给出了错误undefined function 'find' for input arguments of type 'cell'。我可以找到的大部分帮助是用于搜索单元格数组中的字符串。我是否需要将我的所有向量转换为字符串才能工作?

回答

2
C = {[1] 
[1 2] 
[1 2] 
[3] 
[6 7 8 9]}; %// example data 

N = 1; %// sought number 

ind = cellfun(@(v) any(v==N), C); %// gives 1 for cells which contain N 
first = find(ind,1); 
last = find(ind,1,'last'); 
result = [ first last ]; 
+0

完美的作品谢谢你! – neptune36