2013-04-02 5 views
2

바늘로 char 문자열을 사용하고 haysack으로 char 셀 배열을 사용하면 다음과 같은 결과를 얻을 수 있습니까? 시간마다? 나는 그들의 문서를보고 있지만, 그렇지 않으면 제안 할만한 것을 보지 못한다. 저는 SO의 커뮤니티에서도 확인하고 싶었습니다. 기본적MATLAB : strmatch 대 strcmp

, cellArray는 문자의 NX1 셀 어레이이며 임의의 지수의 'ABC'의 값을 갖는다

k = strmatch('abc', cellArray, 'exact'); 

k2 = find(strcmp('abc', cellArray)); 

. 예를 들어, cellArray의 인덱스가 10, 20 및 30 인 경우 abc 인 경우 언제든지 cellArray에 대해이 표시됩니까?

k = [10 20 30]; 

k2 = [10 20 30]; 

두 방법 모두 같은 대답을 반환하는 경우 또한, 당신은 (같은 데이터 유형의 셀 어레이의 문자 문자열을 찾고) 검색 이런 종류의 시나리오에 strcmp 이상 strmatch를 사용해야합니까? strmatch은 왜 내가 묻고 있는지 궁금해하는 사람이 있다면 매우 느립니다.

답변

1

아니요, 결과가 다를 수 있습니다. 셀 어레이 (덤)는 스트링 (바늘) 일치 인덱스의 벡터 반환 strmatch 함수 :

>> arr = {'a', 'b', 'c', 'a', 'b'}; 
>> strmatch('a', arr, 'exact') 
ans = 
    1 
    4 

strcmp 함수는 논리 벡터를 반환 1 S와는 어디 건초 일치하고 0의 그것은 일치하지 않습니다

한편
>> strcmp('a', arr) 
ans = 
    1 0 0 1 0 

, 표현 find(strcmp('a', arr))strmatch('a', arr, 'exact')에 해당합니다.

+0

내 게시물에 오타가있었습니다. 몇 분 전에'find (...) '를 추가했습니다. 어리석은 실수. – musicliftsme

+0

어쨌든 문자열 검색에서'strcmp'를 통해'strmatch'를 사용하는 이유는 무엇입니까? – musicliftsme