17 views (last 30 days)

Dear,

I have "T_mon" which is 1X12 cell array (January to December). Each column includes another cell array (1x13), (1x12),...(1x11). For every column in 1X12 cell array, I want to get mean of T_mon{1, 1}, T_mon{1, 2} ... up to T_mon{1, 12}, to be a double within a cell 1x12. How can I do this?

This cell within the cell is coming from this piece of for loop I wrote. It might not be very clever way of doing this.

for i = 1 : 12

A = T_mon{i};

T_mean{i} = cellfun(@(x) nanmean(x,2), A,'UniformOutput',false);

end

Mario Malic
on 3 Mar 2020

You will need to have two loops, looping over i and j.

for i = 1:length(T_mon)

for j = 1:length(T_mon{1,i})

M(i,j) = mean(T_mon{1,i}{1,j});

end

end

I noticed that there are cells that have different sizes, so I included that with length.

Mario Malic
on 3 Mar 2020

for i = 1:length(T_mon)

for j = 1:length(T_mon{1,i})

M(i,j) = sum(T_mon{1,i}{1,j});

end

end

A = nanmean(M,2); % mean value of rows

A = A'

I hope I understood well what you wanted.

Edit: didn't know that 'nanmean' existed.

Opportunities for recent engineering grads.

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

Start Hunting!
## 1 Comment

## Direct link to this comment

https://au.mathworks.com/matlabcentral/answers/508731-how-to-calculate-mean-of-cell-arrays-within-cell-array#comment_804835

⋮## Direct link to this comment

https://au.mathworks.com/matlabcentral/answers/508731-how-to-calculate-mean-of-cell-arrays-within-cell-array#comment_804835

Sign in to comment.