# How to divide 256X256 matrix into sixteen 16X16 blocks?

215 views (last 30 days)
Malarvizhi on 10 Oct 2013
Answered: AMEN BARGEES on 18 Jul 2022
I am having pixel value of an image as 256X256 matrix. I want to divide it into sixteen 16X16 matrix (ie)an image into sub blocks. It is needed to compare each 16X16 with other. Can anyone help?
Roger Stafford on 10 Oct 2013
By my arithmetic, if you divide a 256x256 matrix into separate 16x16 blocks, there should be 256 of these blocks, not 16.

David Sanchez on 10 Oct 2013
You need to use mat2cell:
X = reshape(1:20,5,4)'
C = mat2cell(X, [2 2], [3 2])
celldisp(C)
This code returns
X =
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
C =
[2x3 double] [2x2 double]
[2x3 double] [2x2 double]
C{1,1} =
1 2 3
6 7 8
C{2,1} =
11 12 13
16 17 18
C{1,2} =
4 5
9 10
C{2,2} =
14 15
19 2
A = rand(256); % your matrix here
N = 16*ones(1,16);
B = mat2cell(A,N,N);

Malarvizhi on 13 Feb 2014
Can you help me to find the Sum of absolute difference for two matrices?
MAMATHA YADAVALLI on 7 Dec 2017
can anyone tell me how to divide 90*90 matrix into 729 3*3 sub matrices?

Namwon Kim on 26 Aug 2019
x = zeros(256,256) % Input is (256,256).
a = size(x, 1);
b = size(x, 2);
numParts = 16
c = floor(a/numParts);
d = rem(a, numParts);
partition_a = ones(1, numParts)*c;
partition_a(1:d) = partition_a(1:d)+1;
e = floor(b/numParts);
f = rem(b, numParts);
partition_b = ones(1, numParts)*e;
partition_b(1:f) = partition_b(1:f)+1;
% Split matrix rows into partition, storing result in a cell array
% 256X256 matrix into sixteen 16X16 blocks
output = mat2cell(x, partition_a, partition_b);

AMEN BARGEES on 18 Jul 2022
ans= reshape(x,16,16,[]);