将二进制方阵分成较小的矩阵

时间:2016-03-05 18:50:30

标签: matlab

我有一个大小为200x200的二进制矩阵:

matrix=double(rand(200,200)>0.5));

我想把这个矩阵分成更小的部分,例如4个100x100的正方形,16个50x50的正方形,64个25x25的正方形,之后成为64个正方形的5x5x5x5个,因为25是奇数。然后我想计算结果矩阵中的那些。

我正在寻找一个优雅的解决方案,而不使用很多循环并寻找一些灵感或有用的matlab函数:)。

提前致谢

1 个答案:

答案 0 :(得分:1)

这正是mat2cell的意思。这也适用于非方形图像

dims = floor(size(img) / n);
output = mat2cell(img(1:dims(1)*n, 1:dims(2)*n), ...
                  ones(1, dims(1)) * n, ones(1, dims(2)) * n);

这会将img的子集传递给mat2cell,以说明img不是n的整数倍的情况。