MATLAB: Mean of cell array containing matrices

matrixmeansort

Hi,
I have a 1×10 cell array, each contains a matrix of nx2 (8×2, 9×2, 6×2, 7×2, 7×2…). I would like to take the mean of each column of the matrices, and re-sort the cell array accoring to the means. I tried to use mean and cee2mat and ran into dimension problems…Thank you in advance for helping!!!

Best Answer

Not sure what do you mean by "re-sort the cell array according to the means" as you have two means corresponding to each cell. Below example shows how to take the means and each column within a cell, and sort the cell based on the mean of the first column.
% generated a 1 by 10 cell, each with a n*2 random matrix.
% n generated randomly within 1 and 20
ind = 1:10;
testCell = arrayfun(@(x) rand(randi(20), 2), ind, 'UniformOutput', 0);
% mean of each column within cell
meanInCell = cell2mat(cellfun(@mean, testCell, 'UniformOutput', 0)');
% sort by the mean of first column
[~, indSort] = sort(meanInCell(:, 1));
sortTestCell = testCell(indSort);
Related Question