在Matlab中如何以广播方式计算子数组的均值?

How do I calculate the mean of subarrays in the broadcast way in Matlab?

目前我是这样做的,

a = rand(1e6,1);

n = 5;

m = 0;

for ii = 1 : n
   m = m + a(ii:n:end);
end

m = m/n;

广播的方式能不能更简洁高效?

假设 a 的长度是 n 的倍数,您可以简单地将 a 重塑为具有 n 行的 2D 矩阵,并且沿着第一个维度找到 average/mean,像这样 -

m = mean(reshape(a,n,[]),1)