modifying one field of defined structure in other used function

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 Comment

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.

Sign in to comment.

 Accepted Answer

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

More Answers (0)

Categories

Asked:

on 12 Mar 2015

Commented:

on 12 Mar 2015

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!