You can use mat2cell to divide a matrix into submatrices: img = uint8(randi([0 255], 206, 100, 3));
n = 10;
rowdist = n * ones(1, ceil(size(img, 1) / n));
rowdist(end) = size(img, 1) - sum(rowdist(1:end-1));
coldist = n * ones(1, ceil(size(img, 2) / n));
coldist(end) = size(img, 2) - sum(coldist(1:end-1));
subimgs = mat2cell(rowdist, coldist, size(img, 3))
To convert the cell array of matrices to a cell array of vectors:
subimgv = cellfun(@(m) m(:), subimgs, 'UniformOutput', false)
Best Answer