赛特菲尔德没用



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

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

setfield的帮助:

S = setfield(S,'field',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);

setfield()更快一点的替代方法是

a.b(1:2) = [2 3]

或者如果索引不是序列

。B ([1 3]) = [2 5]

最新更新