How to programmatically modify substructure with arbitrary number of levels?
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Simon Fortin-Deschenes
le 13 Avr 2022
Commenté : Simon Fortin-Deschenes
le 13 Avr 2022
I am trying to create a function that can modify a field in an arbitrary deep structure in the following way:
function modified_struct = modify_field(original_struct, field_name_cell_aray, new_value)
For instance if I have an original_struct such that
original_struct.a.b = 1
calling
modified_struct = modify_field(original_struct, {'a', 'b'}, 2)
would create the following operations
modified_struct = original_struct
modified_struct.(a).(b) = 2
This should work for a struct with an arbitrary number of levels:
modified_struct = modify_field(original_struct, {'a', 'b', 'c', 'd'}, new_value)
I want a solution that does not use the eval() command since I need to use this in a parfor loop.
Is this possible in matlab?
0 commentaires
Réponse acceptée
Plus de réponses (1)
Jean-Baptiste Lanfrey
le 13 Avr 2022
If I understand correctly, all you need is to use the setfield command, for example:
modified_struct = setfield(original_struct, 'a', 'b', 2)
The field arguments are not in a cell array but I guess it is easy enough to accomodate for this.
0 commentaires
Voir également
Catégories
En savoir plus sur Structures dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!