MATLAB: How to split a 3d matrix into sub-3d matrices

matrix manipulation

How can I split e.g. a 100x100x100 matrix into non-overlapping (neighbouring) smaller matrices 10x10x10? or how to use mat2cell for this problem?

Best Answer

It is easy to split that array using mat2cell, you just need to define a vector that defines how to split each of the dimensions:
A = rand(100,100,100);
D = 10*ones(1,10);
C = mat2cell(A,D,D,D);
and the output:
>> size(C)
ans =
10 10 10
>> size(C{1})
ans =
10 10 10