matlab – 如何以矢量化方式对每第n个元素求一个矩阵?

在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,:))];

虽然语法不是太长,但我想知道我是否可以通过更紧凑,更有效的方式获得相同的结果(即使用bsxfun或arrayfun?)

最佳答案
正如评论中所提到的,reshape基本上将第一个dim分成两个,前者长度为6,有一个3D数组,然后沿着这两个后者使用mean,这将是3D阵列中的第二个暗淡和最终重塑/挤压2D输出 –

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

转载注明原文:matlab – 如何以矢量化方式对每第n个元素求一个矩阵? - 代码日志