搜索向量的单元格数组并返回索引

时间:2014-02-27 15:45:40

标签: matlab search vector cell-array

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

所以我的数据看起来像这样:

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

当我搜索数字1时,我希望我的结果看起来像这样:

ans = 1   3

所有指数(例如1 [1 2 3])也会起作用,但上述情况会更好。到目前为止,我无法解决这两个问题。

我试过

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

这会返回一个逻辑数组,有效地让我回到正方形1.我尝试使用find(cellfun...),但这会产生错误undefined function 'find' for input arguments of type 'cell'。我能找到的大部分帮助都是在单元格数组中搜索字符串。我是否需要将所有向量转换为字符串才能使其正常工作?

1 个答案:

答案 0 :(得分: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 ];
相关问题