我希望能够在MATLAB(r2014a)中动态地将字段分配给结构数组,包括层次结构。除了通过以下示例,我不确定如何最好地描述问题。动态分配具有层次结构的字段名称
我知道如何做到这一点:
field_name1 = 'bar1';
field_name2 = 'bar2';
% ... etc.
foo.(field_name1) = pi;
foo.(field_name2) = exp(1);
% ... etc.
结果变量foo
与领域bar1
和bar2
的结构。
我希望能够做的是:其中取决于以前的状态
field_name1 = 'bar1';
field_name2 = 'bar2';
% ... etc.
if true_false_statement
extra_level = '';
else
extra_level = 'baz.';
end
foo.([extra_level field_name1]) = pi;
foo.([extra_level field_name2]) = exp(1);
% ... etc.
,字段可以存储在结构的顶层或者一个子场下。 (注意,如果我从头开始做这件事,我会设计不同的事情来避免这个问题,但是我修改了一些代码,这是一个更大的工作流程中的中间步骤,所以我必须保留这些数据。结构一致)
目前,代码看起来是这样的:
field_name1 = 'bar1';
field_name2 = 'bar2';
% ... etc.
if true_false_statement
foo.(field_name) = pi;
foo.(field_name) = exp(1);
% ... etc.
else
foo.baz.(field_name) = pi;
foo.baz.(field_name) = exp(1);
% ... etc.
end
或许罚款一个两个领域,但也有很多领域,这会导致大量的复制/粘贴代码。我试图让extra_level
为空字段,并且我已经尝试使的形式为*.*
,但是这两个选项都会引发错误,因为结果不是有效的变量名称。
有没有很好的方法来做到这一点?
有趣的问题。我期待着答案。 – rayryeng