how to sum value of fields on struct?
131 views (last 30 days)
Show older comments
i have a struct in size 1000*1 with 2 fields.how to sum value of fields? my code:(s is struct)
sum1 = sum(s.Fields1(1:end));
2 Comments
Answers (4)
KSSV
on 26 Oct 2016
s = struct ;
for i = 1:100
s(i).a = rand(1) ;
s(i).b = i ;
end
suma = sum([s(:).a]) ;
sumb = sum([s(:).b]) ;
Andrei Bobrov
on 26 Oct 2016
Edited: Andrei Bobrov
on 26 Oct 2016
z = struct2cell(s(:));
out = sum(reshape([z{:}],size(z)),2);
or general variant
z = cellfun(@(x)x(:)',struct2cell(s(:)),'un',0);
out = arrayfun(@(ii)sum([z{ii,:}]),(1:size(z,1))');
0 Comments
sourav malla
on 4 Jul 2019
You can do it with a for loop like this:
sum1=0;
for i=1:length(s)
sum1=sum1+s(i).fieldname
end
or you can directly do like this:-
sum1=sum([s(:).fieldname])
0 Comments
Karol Ondrejkovic
on 28 Mar 2023
s = struct; % create a scalar (1-by-1) structure with no fields
N = 1000; % number of fields to be created
for i = 1 : N
s(i).a = i + 1; % s(1).a = 2; s(2).a = 3; s(3).a = 4; ... ; s(N).a = 1001; (fill "a" fields with scalar values)
s(i).b = i; % s(1).b = 1; s(2).b = 2; s(3).b = 3; ... ; s(N).b = 1000; (fill "b" fields with scalar values)
end
% Sumation of scalar values:
c = struct2cell(s); % convert (1 by N) struct to (2 by 1 by N) cell array
ca_sum = sum([c{1,1,:}], 2); % sum of the elements in the "a" fields
cb_sum = sum([c{2,1,:}], 2); % sum of the elements in the "b" fields
c_sum = sum([c{:}]); % sum of the elements in the "a+b" fields
0 Comments
See Also
Categories
Find more on Structures in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!