matlab - 如何以矢量化方式平均每第 n 个元素的矩阵?

标签 matlab matrix vectorization mean bsxfun

在 MATLAB 中,给定一个 36 x 17 矩阵 A,我想对每列的每 6 个元素进行平均,从而创建一个 6 x 17 矩阵 B。我可以使用以下代码实现它:

A = rand(36, 17);

B = [mean(A(1:6:36,:)); mean(A(2:6:36,:)); mean(A(3:6:36,:)); mean(A(4:6:36,:)); mean(A(5:6:36,:)); mean(A(6:6:36,:))];

虽然语法不是很长,但我想知道是否可以通过更紧凑、更高效的方式(即使用 bsxfunarrayfun?)实现相同的结果

最佳答案

如评论中所述,reshape基本上将第一个暗淡分成两部分,前者的长度为 6 以获得 3D 数组,然后使用 mean沿着这两者中的后者,这将是 3D 数组中的第二个暗淡和 2D 输出的最终 reshape /挤压 -

B = squeeze(mean(reshape(A,6,[],size(A,2)),2))

关于matlab - 如何以矢量化方式平均每第 n 个元素的矩阵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43619818/

相关文章:

matlab - 对于具有相同轴 handle 的两个绘图 handle ,按住一键不起作用

matlab - 如何更改图像轴标签

python - 使二进制堆叠示例适应多类

matlab - 矢量化矩阵乘法

python - 从 numpy argmin 中删除轴参数,但仍然矢量化

c++ - AVX 4 位整数

matlab - 将文本置于图的前面

matlab - 矢量化代码比 Matlab 中的 for 循环慢

python - 用numpy乘以高阶矩阵

python - 循环遍历 numpy 矩阵