MATLAB: Trimming matrices to smallest size

3d matricescellscroptrim

Hello,
I need to find a way to automate this process.
I have a 1-by-8 cell, which consists of 8 3D matrices. Each matrix is approximately n x m x p in size. I need to make them exactly n x m x p by trimming the highest end.
Details –
S is a 1 by 8 cell
where each cell element is supposed to be n x m x p. There are (can be) cell elements which can go (n+1) x m x p or n x (m+1) x p. etc.
I need to identify the matrix with smallest dimension on each end (n x m x p) and trim the rest 7 if needed to this value.
Any leads appreciated.
Thanks!

Best Answer

minsize = min(cell2mat(cellfun(@size, S(:), 'uniform', 0)));
newS = cellfun(@(M) M(1:minsize(1), 1:minsize(2), 1:minsize(3)), S, 'uniform', 0);