2017-05-01 3 views
2

私は入れ子構造の配列を持っています。私は数3を含む「.C」オブジェクトのインデックス番号を検索したい場合の例Matlabの入れ子構造のfindの使い方

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

...とのためにそう

に、私は次の関数

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);