2017-05-01 3 views
2

Ich habe ein Array von verschachtelten Struktur. zum BeispielWie finden Sie mit verschachtelten Struktur in Matlab

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

... und so weiter

Wenn ich die Indexnummer der ‚.c‘ Objekte enthalten die Nummer 3, versuche ich die folgende Funktion

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

Es gibt diesen Fehler:

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

Könnte jemand mir helfen, dieses Problem zu lösen?

Antwort

0

Wie Sie vielleicht herausgefunden haben, ist die Handhabung der Indexierung mit mehreren Ebenen in Strukturen ein wenig verwirrend. Dies könnte jedoch hilfreich sein:

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