分配结构的字段而不是另一个结构

时间:2014-02-13 14:45:47

标签: matlab structure

我正在尝试从函数内部修改结构中的字段(即在基础工作区中)。因此,我正在尝试使用assignin函数。

assignin('base', 'arg', setfield('arg.aa','abc', 60))

我的结构如下:

arg = struct('aa', struct('abc',30));

因此,我正在尝试修改字段abc。但是,我正在使用的assignin命令行会覆盖结构aa并将字段abc放入。

所以在assignin之后,aa消失了,我留下了arg.abc = 60

1 个答案:

答案 0 :(得分:0)

assignin('base', 'arg', setfield('arg.aa','abc', 60))

我认为这不是你想要的。 此调用首先评估本地/函数工作空间中的setfield('arg.aa','abc', 60),然后仅将结果分配给基础工作空间。由于第一个abc参数是一个字符串,因此导致单个字段60具有值setfield的结构。 (这应该是警告btw。)

您可以通过以下方式替换它:

evalin('base', 'arg.aa = setfield(arg.aa, ''abc'', 60);')

或者,在做同样的事情时更容易阅读:

evalin('base', 'arg.aa.abc = 60;')