如何在Matlab中使用带有嵌套结构的find

时间:2017-05-01 10:30:29

标签: mat matlab-struct

我有一个嵌套结构数组。例如

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 个答案:

答案 0 :(得分: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);