Finding the mean of each column of each double within a structure

2 views (last 30 days)
Hello! I would like to find the mean of each double within this structure (named beh_data). Each double contains 4 columns. I would like to have the mean of each column (ideally the 2nd, 3rd and 4th column only), for each double.
I have tried various things eg:
MeanMovementPerTrial = [];
for i = 1:length (beh_data)
MeanMovementPerTrial(i) = structfun (@mean,beh_data.data(i),'UniformOutput',false);
end
Or even simpler stuff, but I keep getting different errors. Do you know how I can do this? Thank you =)

Accepted Answer

dpb
dpb on 29 Aug 2022
Something like
M=arrayfun(@(s)mean(s.Data(:,2:end)),beh_data,'UniformOutput',0).'; % calculate the means
M=cellfun(@(c)struct('Means',c),M,'UniformOutput',1); % put them in a new struct array
Use arrayfun to iterate over the struct array, returning a cell array of the means. Then convert those to a new struct array by operating on each via cellfun.
If one were really a glutton for trying to play "MATLAB golf", see if can figure out and keep straight doing both in one line... :)

More Answers (0)

Categories

Find more on Structures in Help Center and File Exchange

Products


Release

R2020b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!