2013-10-29 2 views
0

요소가 'y', 'n'또는 '?'인 435x1 셀 배열이 있습니다. 나는 어떤 지수가 'y'와 같은지 찾고 싶다.Matlab - 셀 배열의 인덱스에 벡터화 된 방법 동일한 문자열

정상적인 배열에서는 find 함수 만 사용합니다. 하지만 eq가 타입 셀에 정의되어 있지 않기 때문에 셀 배열에 사용할 수 없습니다.

은 내가 각 요소를 통해 이동 할

for index=1:size(cell_array,1) 
    if cell_array{index} == 'y' 
     %add index to some array of indices 
    end 
end 

을하지만 배열을 통해 이동하고 인덱스가 'Y'로 동일한 요소를 포함 찾을 수있는 벡터화 방법이 할 수 있다고 생각? 어떤 도움을 주셔서 감사합니다.

+1

[? 어떻게 MATLAB에서 셀 어레이에서 문자열을 검색하는]의 중복 가능성 (http://stackoverflow.com/questions/8061344/how-to-search-for -a-string-in-cell-array-in-matlab) –

+0

@EitanT - 스털링이'[cell_array {:}] == 'y '' 비트에 가장 관심이 있다고 생각합니다. 이것은 다른 질문에 대한 가능한 해결책이 아니므로'find '는 익숙한 방식으로 사용할 수 있습니다. 'eq'. 기능적으로는 똑같습니다. – chappjc

답변

5

각 세포는 모든 세포 요소를 연결할 수있는 단일 문자를 포함하고 단일 벡터화 테스트 할 것입니다 알고 있기 때문에 : 아마도 가장 간단한 방법은 단지를 수용 할 수있는 strcmp을 사용하는 것입니다

find([cell_array{:}]=='y') 

을 두 번째 인수로 셀 어레이 :

find(strcmp('y',cell_array)) 
+1

보다 정확하게, 'y'값의 인덱스를 얻을 수 있도록'find (strcmp ('y', cell_array))'를 원할 것입니다. – MrAzzaman

+0

고마워, 나는'strcmp' 주위에'find'가 필요하다는 것을 분명히 할 것입니다. – chappjc

+0

+1 두 번째 방법은 더 일반적입니다. 단발기를 필요로하지 않기 때문입니다. –