modifying one field of defined structure in other used function
1 次查看(过去 30 天)
显示 更早的评论
I have defined a data structure `data` with 7 fields. Two of the fields is as:
n = 4;
data = struct();
data.Aeq = zeros(n);
data.beq = zeros(n,1);
m =3;
Now, there is another function `ul(data,m)` that I am passing the `data` and `m` as inputs. Inside `ul()`, I will modify one component of matrix `Aeq` as:
data.Aeq(m,m) = 1;
after running whole the code when I am checking `data.Aeq` it is still zero matrix while I have modified on component. Am I doing something wrong?
1 个评论
Brendan Hamm
2015-3-12
Please post the function which is supposed to modify the data.
Likely you are trying to use a pass by reference functionality, while MATLAB is pass by value.
采纳的回答
Guillaume
2015-3-12
As Brendan has stated in his comment, matlab is exclusively pass by value. A function always receive a copy of the input arguments, so modifications are only local to the function.
To solve your problem, modify your function declaration to:
function data = ul(data, m)
%...body of the function
data.Aeq(m, m) = 1; %modify local copy which is returned by the function
%...more code
end
and call your function with:
data = ul(data, m);
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Structures 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!