我有一个大小为200x200的二进制矩阵:
matrix=double(rand(200,200)>0.5));
我想把这个矩阵分成更小的部分,例如4个100x100的正方形,16个50x50的正方形,64个25x25的正方形,之后成为64个正方形的5x5x5x5个,因为25是奇数。然后我想计算结果矩阵中的那些。
我正在寻找一个优雅的解决方案,而不使用很多循环并寻找一些灵感或有用的matlab函数:)。
提前致谢
答案 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
的整数倍的情况。