반응형
MATLAB에서 셀형 배열의 문자열을 검색하는 방법은 무엇입니까?
셀형 배열이 있다고 가정 해 보겠습니다.
strs = {'HA' 'KU' 'LA' 'MA' 'TATA'}
색인을 찾으려면 어떻게해야 'KU'
합니까?
다음 코드가 트릭을 할 수 있다고 생각합니다.
strs = {'HA' 'KU' 'LA' 'MA' 'TATA'}
ind=find(ismember(strs,'KU'))
이것은 반환
ans =
2
>> strs = {'HA' 'KU' 'LA' 'MA' 'TATA'};
>> tic; ind=find(ismember(strs,'KU')); toc
경과 시간은 0.001976 초입니다.
>> tic; find(strcmp('KU', strs)); toc
경과 시간은 0.000014 초입니다.
SO, 분명히 strcmp('KU', strs)
보다 훨씬 적은 시간이 걸립니다ismember(strs,'KU')
2011a 이후 권장되는 방법은 다음과 같습니다.
booleanIndex = strcmp('KU', strs)
종종 필요하지 않은 정수 인덱스를 얻으려면 다음을 사용할 수 있습니다.
integerIndex = find(booleanIndex);
strfind
더 이상 사용되지 않으므로 사용하지 마십시오.
모두가 코드에서 가장 중요한 결함을 놓친 것을 확인했습니다.
strs = {'HA' 'KU' 'LA' 'MA' 'TATA'}
해야한다:
strs = {'HA' 'KU' 'NA' 'MA' 'TATA'}
또는
strs = {'HAKUNA' 'MATATA'}
이제 사용을 고수한다면
ind=find(ismember(strs,'KU'))
당신은 걱정하지 않을 것입니다 :).
이 경우에는 다른 답변이 더 간단 할 수 있지만 완전성을 위해 익명 함수와 함께 cellfun 사용을 추가 할 것이라고 생각했습니다.
indices = find(cellfun(@(x) strcmp(x,'KU'), strs))
대소 문자를 구분하지 않거나 구조의 셀형 배열이있는 경우 쉽게 사용할 수 있다는 장점이 있습니다.
indices = find(cellfun(@(x) strcmpi(x.stringfield,'KU'), strs))
가장 짧은 코드 :
strs = {'HA' 'KU' 'LA' 'MA' 'TATA'};
[~,ind]=ismember('KU', strs)
그러나 strs
. 요소가 없으면 ind=0
.
strcmp 및 strcmpi 함수는이를 수행하는 가장 직접적인 방법입니다. 그들은 배열을 통해 검색합니다.
strs = {'HA' 'KU' 'LA' 'MA' 'TATA'}
ix = find(strcmp(strs, 'KU'))
시도해 보았 니
indices = Find(strs, 'KU')
링크 참조
또는
indices = strfind(strs, 'KU');
내가 착각하지 않으면 작동해야합니다.
참고 URL : https://stackoverflow.com/questions/8061344/how-to-search-for-a-string-in-cell-array-in-matlab
반응형
'Programing' 카테고리의 다른 글
Windows에서 어떤 컴퓨터가 프로그래밍 방식으로 도메인 컨트롤러인지 어떻게 알 수 있습니까? (0) | 2020.08.20 |
---|---|
Jquery를 사용하여 부모 div의 ID 찾기 (0) | 2020.08.20 |
표시된 후 부트 스트랩 모달의 첫 번째 텍스트 입력에 초점을 설정하는 방법 (0) | 2020.08.20 |
Java에서 많은 매개 변수를 사용하여 생성자 관리 (0) | 2020.08.20 |
PHP_SELF 대 PATH_INFO 대 SCRIPT_NAME 대 REQUEST_URI (0) | 2020.08.20 |