索引嵌套结构中的所有值

时间:2013-05-08 19:39:37

标签: matlab octave

我有一个包含值的嵌套结构,定义为:

mystruct.level1.a = 1;
mystruct.level1.b = 2;
mystruct.level2.a = 8;
mystruct.level2.b = 9;

我想对level1和level2中的元素执行操作。我想要做的是访问level1和level2中的值,将它们放在一个向量中,而不引用嵌套的字段名称。

E.g。我想做点什么:

level1_vector = [mystruct.level1]

我想输出:

level1_vector = [1 2]

我该怎么做?

2 个答案:

答案 0 :(得分:1)

使用以下两种功能的组合:

cell2mat(struct2cell(mystruct.level1))

答案 1 :(得分:0)

structfun这样做。它将返回另一个具有相同名称的结构。所以对于你的情况:

con_struct = structfun (@(x) [x.a x.b], mystruct, "UniformOutput", false);

现在,con_struct将与mystruct具有相同的字段,但不是结构,而是每个结构都是一个包含所需值的数组。您可以再次为每个阵列提供所需的任何功能

structfun (@foo, con_struct)