【发布时间】:2016-06-08 03:48:47
【问题描述】:
我有一个 Matlab 对象,它是一个包含具有几乎相同结构的结构的元胞数组,我想以编程方式获取所有元胞数组元素的结构的(子)字段。
比如我们取test
test = {struct('a',struct('sub',1)), struct('a',struct('sub',2),'b',1)};
这将创建一个具有以下结构的元胞数组:
cell-element 1: a --> sub --> 1
cell-element 2: a --> sub --> 2
\-> b --> 1
可以看出test的元素结构并不完全相同,而是相似。如何获取单元格元素的 a.sub 字段的所有值。我可以在这个特定问题中获得它们
acc=zeros(1,numel(test));
for ii=1:numel(test)
acc(ii) = test{ii}.a.sub;
end
但我不能完全让这种方法在更一般的环境中工作(即具有不同的字段)。
【问题讨论】:
-
“拥有不同的字段”是什么意思?不同类型的字段值?不同的字段名称?
-
我的意思是不是访问每个元素的字段
.a.sub而是访问不同的字段,例如。.some.thing.else(我没有包含在我的小示例单元数组中) -
看看
getfield函数:mathworks.com/help/matlab/ref/getfield.html -
getfield或多或少等同于动态字段名称.(variable),不能处理像a.sub这样的字段名称。因此,如果不以某种方式在.上拆分a.sub,我将无法直接使用它。 -
好的,也许我应该把这个放在答案中......
标签: matlab cell-array