【发布时间】:2017-09-23 00:11:20
【问题描述】:
在 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?)实现相同的结果
【问题讨论】:
-
您可以重塑为 3d 矩阵并在其中一个维度上取平均值。
-
我怀疑 arrayfun 会更有效。在大多数情况下,Arrayfun 的效率可能低于循环。
标签: matlab matrix vectorization mean bsxfun