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

时间:2015-03-12 12:05:09

标签: matlab data-structures datafield

我已经定义了一个包含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时运行整个代码后,当我修改了组件时,它仍然是零矩阵。我做错了吗?

1 个答案:

答案 0 :(得分:3)

在函数内修改的变量不会在函数外部更改。您应该返回数据作为函数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现在应该正确修改。