modifying one field of defined structure in other used function
2 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
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 Commento
Brendan Hamm
il 12 Mar 2015
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.
Risposta accettata
Guillaume
il 12 Mar 2015
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);
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Structures in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!