Как использовать find с вложенной структурой в Matlab
У меня есть массив вложенной структуры. например
st(1).a.b.c=1
st(2).a.b.c=2
st(3).a.b.c=3
...и так далее
Если я хотел найти индексный номер объектов.c, содержащих номер 3, я пробую следующую функцию
find([st.a.b.c]==3)
Это дает эту ошибку:
Ожидается один вывод из выражения индексации с фигурными скобками или точками, но было 3 результата.
Может ли кто-нибудь помочь мне решить эту проблему?
1 ответ
Как вы, возможно, поняли, обработка многоуровневой индексации в структурах немного сбивает с толку. Тем не менее, может оказаться полезным:
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);