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)
,我将 data
和 m
作为输入传递。在 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 现在应该被正确修改了。
我定义了一个包含 7 个字段的数据结构 data
。其中两个字段如下:
n = 4;
data = struct();
data.Aeq = zeros(n);
data.beq = zeros(n,1);
m =3;
现在,还有另一个函数 ul(data,m)
,我将 data
和 m
作为输入传递。在 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 现在应该被正确修改了。