2014-02-27 3 views
0

길이가 다른 벡터 배열을 3000x1 cell 개 갖고 있으며 숫자를 모두 검색하여 그 번호의 첫 번째 및 마지막 출현에 대한 cell 색인을 반환하는 방법을 찾고 있습니다. .벡터의 셀 배열 검색 및 인덱스 반환

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

그리고 나는 숫자 1을 검색 할 때 다음과 같이 내 결과를 원하는 :

그래서 내 데이터는 다음과 같습니다 예를 들어

ans = 1 3 

모든 인덱스 ([1 2 3]에 대한 1) 또한 효과적 일 것입니다. 지금까지 나는 어느 쪽의 문제도 풀 수 없다.

나는 효과적으로 내가 find(cellfun...)를 사용하려고했습니다 평방 1. 다시 나를두고,

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

이것은 논리적 배열을 반환을 시도했지만이 오류 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

관련 문제