2017-05-01 21 views
2

중첩 된 구조의 배열이 있습니다. 예를 들어Matlab에서 중첩 된 구조로 찾기를 사용하는 방법

st(1).a.b.c=1 
st(2).a.b.c=2 
st(3).a.b.c=3 

... 그리고 내가 숫자 3, 나는 다음과 같은 기능을하려고 들어있는 '.c 인'개체의 인덱스 번호를 찾기 위해 원하는 경우

find([st.a.b.c]==3) 

이 오류를 제공합니다 :

Expected one output from a curly brace or dot indexing expression, but there were 3 results.

아무도 내가이 문제를 해결하는 데 도움이 될 수 있습니까?

답변

0

구조적으로 여러 수준의 인덱싱을 처리하는 것은 다소 혼란 스러울 수 있습니다. 그러나이 정보는 도움이 될 것입니다 :

st(1).a.b.c=1; 
st(2).a.b.c=2; 
st(3).a.b.c=3; 

checkLoop = 1; 
while checkLoop 
    if isstruct(st) 
     fieldNm = fieldnames(st); % In case you have single field in each level 
     st = [st(:).(fieldNm{1})]; 
    else 
     checkLoop = 0; 
    end 
end 

where3 = find(st == 3);