我正在尝试从函数内部修改结构中的字段(即在基础工作区中)。因此,我正在尝试使用assignin
函数。
assignin('base', 'arg', setfield('arg.aa','abc', 60))
我的结构如下:
arg = struct('aa', struct('abc',30));
因此,我正在尝试修改字段abc
。但是,我正在使用的assignin
命令行会覆盖结构aa
并将字段abc
放入。
所以在assignin
之后,aa
消失了,我留下了arg.abc = 60
。
答案 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;')