Matlab矩阵中矩阵的平均值

时间:2018-06-22 23:00:25

标签: arrays matlab matrix mean

这是关于matlab的。 假设我有一个像这样的矩阵

A = [1,2,3,4,5;6,7,8,9,10;11,12,13,14,15]‍

现在,我想知道如何在A中获得小矩阵的平均值。 就像位于左上角[1,2;6,7]

的矩阵的平均值

我唯一想到的方法就是切掉我想从中获得价值的部分

X = A(1:2,:);
XY = X(:,1:2);

并按列的平均值Mcol = mean(XY);表示值。

最后通过逐行表示Mcol来获得该部分的均值。

Mrow = mean(Mcol,2);

我认为这不是明智的选择,因此,如果有人帮助我使其变得更聪明,更快捷,那将是很棒的事情。

1 个答案:

答案 0 :(得分:2)

您的程序正确。 一些小改进是:

  • 一步一步使用索引获得XYXY = A(1:2, 1:2)
  • 将两个对mean的调用替换为在 linearized 子矩阵mean(XY(:))上的单个调用。
  • 避免创建XY。在这种情况下,您可以使用reshape进行线性化,如下所示:mean(reshape(A(1:2, 1:2), 1, []))

如果要对所有重叠的子矩阵执行此操作,则可以使用“图像处理工具箱”中的im2col

submatrix_size = [2 2];
A_sub = im2col(A, submatrix_size);

给予

A_sub =
     1     6     2     7     3     8     4     9
     6    11     7    12     8    13     9    14
     2     7     3     8     4     9     5    10
     7    12     8    13     9    14    10    15

也就是说,每一列都是线性化的子矩阵之一。因此,现在您只需要mean(A_sub, 1)即可获取所有子矩阵的均值。