2014-07-25 4 views
0

큰 구조체를 검색하고 같은 이름을 가진 모든 구성 요소의 색인을 찾아야합니다. 예를 들어Struct (Matlab)에서 문자열 비교

는 :

strcmp(structure.name,'13hy') 
ismember(structure.name,'13hy') 
strfind(structure.name,'13hy') 

내가 오류 '너무 많은 입력을 점점 계속 : 이름 인 경우 나 배열이 필요 13hy [1,5] 내가 시도

structure(1,1).name = '13hy' 
structure(2,1).name = '64hy' 
structure(3,1).name = '37hy' 
structure(4,1).name = '07hy' 
structure(5,1).name = '13hy' 

을 반환 논증. ' 도와주세요

답변

3

사용 arrayfunstrcmp 원하는 이름을 테스트 할 anonymous function 기반하여, 구조를 통과하는 :

find(arrayfun(@(n) strcmp(structure(n).name, '13hy'), 1:numel(structure))) 
+0

완벽하게 작동했습니다. 감사합니다. 전에 보지 못했던 @ (n)은 무엇입니까? – FireSky

+0

익명 함수를 정의하는 데 사용됩니다. 내 대답의 링크를 확인하십시오. –

0

사용 [] :
을 strcmp ([structure.name, '13hy ')

내용을 연결하고 구조체를 일반적인 변수와 매우 흡사하게 사용할 수 있습니다.

즐기십시오!