Extracting a field name from a cell array in a structure

I am trying to extract a field from a cell array of varying sizes. For instance, if I have the following:
name1.name2.name3.name4{1.2}.name5
I want to locate name5, but the cell array is of an unknown and varying size and name5 could be in any cell. It could be:
name1.name2.name3.name4{1,10}.name5
name1.name2.name3.name4{1,8}.name5
name1.name2.name3.name4{1,1}.name5
How do I search for a known field name within a complicated structure such as this?
Thank you, Susie

 採用された回答

Andrei Bobrov
Andrei Bobrov 2011 年 12 月 16 日

1 投票

A = name1.name2.name3.name4;
idx = find(cellfun(@isstruct,A));
i2 = cellfun(@(x)any(strcmp(x,'name5')),cellfun(@fieldnames,A(idx),'un',0));
idx = idx(i2);
out = A(idx)

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeStructures についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by