我有一个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'
。我能找到的大部分帮助都是在单元格数组中搜索字符串。我是否需要将所有向量转换为字符串才能使其正常工作?
答案 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 ];