Update multiple values in a struct array
12 次查看(过去 30 天)
显示 更早的评论
I have a struct array S with multiple fields. One of the fields contains numeric values. I want to add a scalar quantity to every entry in this field and overwrite the existing value. I can do this with a loop as follows:
for a = 1:length(S)
S(a).value = S(a).value + 5;
end
Is there a one-line function that does the equivalent?
0 个评论
采纳的回答
更多回答(2 个)
Voss
2022-5-24
编辑:Voss
2022-5-24
This works whether the field is a scalar in each element of S or not:
S = struct('value',{[1 2 3] [2 3; 4 5] [] 6}); % initial struct array
celldisp({S.value});
C = cellfun(@(x)x+5,{S.value},'UniformOutput',false); % perform the additions
[S.value] = C{:}; % assign the result back to the struct array
celldisp({S.value});
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!