Matlab 设置字段不工作

Matlab 设置字段不工作,matlab,struct,Matlab,Struct,我有a.b,一个三元素向量。我想改变前两个元素。第三行中的代码不包括第二行中的更改。例如,第二行响应为: [2 0 0] [0 3 0] 第三行答复如下: [2 0 0] [0 3 0] 我的代码如下 a.b = [0 0 0] setfield(a,'b',{1},2) setfield(a,'b',{2},3) 这段代码就是一个例子。这是为了说明问题。您可以按如下方式更正它 a.b = [0 0 0]; a = setfield(a, 'b', {1}, 2); a = setfi

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

[2 0 0]
[0 3 0]
第三行答复如下:

[2 0 0]
[0 3 0]
我的代码如下

a.b = [0 0 0]
setfield(a,'b',{1},2)
setfield(a,'b',{2},3)
这段代码就是一个例子。这是为了说明问题。

您可以按如下方式更正它

a.b = [0 0 0];
a = setfield(a, 'b', {1}, 2);
a = setfield(a, 'b', {2}, 3);
设置字段的帮助下

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);

比设置域()快一点的替换是

a、 b(1:2)=[23]

或者如果索引不在序列中

a、 b([13])=[25]


如果您想在脚本中执行此操作,它将无法工作(在某种程度上我不理解)。因此,我可以假设它不起作用。它在脚本中应该可以很好地工作,但是作为代码,您的问题是一个示例,您可能有一个更复杂的结构,解决方案必须稍微调整。