Matlab:在其他使用的函数中修改定义结构的一个字段

Matlab: modifying one field of defined structure in other used function

我定义了一个包含 7 个字段的数据结构 data。其中两个字段如下:

n = 4;
data = struct();
data.Aeq = zeros(n);
data.beq = zeros(n,1);
m =3;

现在,还有另一个函数 ul(data,m),我将 datam 作为输入传递。在 ul() 中,我将矩阵 Aeq 的一个分量修改为:

data.Aeq(m,m) = 1;

在 运行 完成代码后,当我检查 data.Aeq 时它仍然是零矩阵,而我已经修改了组件。我做错了什么吗?

在函数内修改的变量不会在函数外改变。您应该 return 数据作为函数 ul 的输出。例如:

function data=ul(data,m)
data.Aeq(m,m) = 1
end

n = 4;
data = struct();
data.Aeq = zeros(n);
data.beq = zeros(n,1);
m =3;

data = ul(data,m)

data.Aeq 现在应该被正确修改了。