How to programmatically modify substructure with arbitrary number of levels?
2 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
更多回答(1 个)
Jean-Baptiste Lanfrey
2022-4-13
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 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Structures 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!