我有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矩阵,循环超出索引。如何更正错误?
答案 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