矩阵分块计算,盒维法求指点

如何将一个1616的0,1矩阵,分成22的64个小矩阵,并计算每个小矩阵中所有数的和,接着把它分成44的16个小矩阵,以此类推,直到分成88的4个小矩阵

你好,可以这样做

A = randi([0,1],16,16); %随机01矩阵,这里只是举个例子
k = 2.^(1:3);
for i = 1:length(k)
    s = k(i);
    c = mat2cell(A, s*ones(1, 16/s), s*ones(1, 16/s));% c里面就是你要分的小矩阵,i=1时分成8×8个,i=2时分成4×4个....
    [i1,j1] = meshgrid(1:16/s);
    summ = arrayfun(@(i,j)sum(c{i,j}(:)),i1,j1);
end

结果是随机的,所以给了一个计算结果:

summ =

     1     4     3     3     2     0     2     4
     1     1     2     2     1     4     3     2
     2     2     2     1     3     1     2     2
     2     1     2     4     2     0     2     3
     0     2     3     1     2     2     0     0
     2     3     0     3     1     2     2     2
     3     2     1     1     3     3     2     0
     2     2     2     2     0     3     1     2


summ =

     7    10     7    11
     7     9     6     9
     7     7     7     4
     9     6     9     5


summ =

    33    33
    29    25