我有一个包含值的嵌套结构,定义为:
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]
我该怎么做?
答案 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)