arrays - Matlab上矩阵中矩阵的平均值
问题描述
这是关于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);
我认为这不是一个聪明的方法,所以如果有人帮助我让它变得更聪明、更快,那就太好了。
解决方案
你的程序是正确的。一些小的改进是:
XY
一步即可使用索引:XY = A(1:2, 1:2)
- 将两个调用替换为线性化子矩阵
mean
上的一个调用: .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)
得到所有子矩阵的均值。
推荐阅读
- bash - Bash 替换 tail -f 后的前 4 个字符
- html - 如何使用 Facebook、Twitter、Whatsapp 和 Messenger 分享按钮分享当前页面?
- jira - 在 Jira 中进行自动转换
- google-cloud-datastore - 参考从对象修改字段并在保存包含对象时保存
- c# - 使用 C# 以编程方式从私有 GitHub 存储库读取图像
- kotlin - 在 Web 前端使用 Kotlin 进行 Firebase 电子邮件密码身份验证
- c# - 如何从 Web API 将字节数组转换为图像?
- image - 从自定义映像 Google Cloud Platform 运行实例时出现问题。WinRm 超时
- c - 无法定义共享内存对象的大小
- python - Python 矩阵乘法逐行与示例代码