从Matlab中提取子矩阵的均值,并用均值创建一个新的矩阵

时间:2017-10-05 01:57:29

标签: matlab

我有100 X 100矩阵,我想通过在较大矩阵中采用子矩阵的标量和来创建一个10 x 10矩阵。因此,子10 x 10矩阵的标量和将是单个数字,它将是新10 X 10矩阵的一个元素。

我使用了以下代码:

x = ones(100,100) % 100 X 100 matrix
y = []   % Output 
a = 0 ;
b = 0;
while a <=100
    while b <=100
        y = [y,sum(sum(x((a+1):(a+10),(b+1):(b+10))))];
        a=a+10; 
        b=b+10;
    end
end
reshape(y,10,10)

我得到一个1×10矩阵而不是100×100矩阵,循环超出索引。如何更正错误?

1 个答案:

答案 0 :(得分:1)

如果我理解正确,这应该做你想要的。请注意,它计算总和,而不是平均值。如果你想要均值,只需将总和改为均值即可。

x = ones(100,100) % 100 X 100 matrix
y = NaN(10,10)   % Output
a = 0 ;
b = 0;
for xi=5:10:100
    for yi=5:10:100
        sub_matrix = x(xi-4:xi+5,yi-4:yi+5);
        y(ceil(xi/10),ceil(yi/10))=sum(sum(sub_matrix));
    end
end