setfield无法正常工作

ken*_*nes 3 matlab struct

我有a.b一个三元素矢量.我想改变前2个元素.第三行中的代码不包括第二行的更改.例如,第二行响应为:

[2 0 0]
Run Code Online (Sandbox Code Playgroud)

第三行响应为:

[0 3 0]
Run Code Online (Sandbox Code Playgroud)

我的代码如下.

a.b = [0 0 0]
setfield(a,'b',{1},2)
setfield(a,'b',{2},3)
Run Code Online (Sandbox Code Playgroud)

这段代码就是一个例子.这是为了说明问题.

DVa*_*rga 5

您可以将其更正为

a.b = [0 0 0];
a = setfield(a, 'b', {1}, 2);
a = setfield(a, 'b', {2}, 3);
Run Code Online (Sandbox Code Playgroud)

在以下的帮助下setfield:

S = setfield(S,'field',V)将指定字段的内容设置为值V.这相当于语法S.field = V.S必须是1乘1的结构. 返回更改的结构.

在不捕获返回值的情况下,第一次setfield调用将修改struct后的ans值赋给变量.

因此,以下代码也有效,但应避免:

a.b = [0 0 0];
setfield(a, 'b', {1}, 2);
a = setfield(ans, 'b', {2}, 3);
Run Code Online (Sandbox Code Playgroud)