列中固定间隔的平均值

时间:2017-03-10 16:46:46

标签: matlab

想法是计算列中固定间隔的平均值。

例如,A是30x1向量

A = [1.99116598579953
1.99130458744713
1.99130275791797
1.99130076212379
1.99129732263637
1.99129554481068
1.99129253092248
1.99128919331283
1.99128626646018
1.99128246022340
1.99127910416334
1.99127449885866
1.99126838746186
1.99126266917557
1.99125588988770
1.99124956601103
1.99126589366625
1.99124606011343
1.99126958257006
1.99123953491790
1.99120496980550
1.99117314162230
1.99113868160464
1.99110378123068
1.99106504737775
1.99103199236620
1.99099943597514
1.99097000143012
0.0845141896302122
0.0755554572754849];

固定间隔为3,这意味着输出B是包含每个间隔的平均值的10x1向量。

我怎样才能实现这一目标?

1 个答案:

答案 0 :(得分:1)

方法1:将A中的直接组元素转换为三元组,然后mean

% method 1
B1 = reshape(A,3,10);
B1 = mean(B1,1)';

方法2:构建索引矩阵,然后找到每组索引的mean。这样,您可以根据需要单独调整索引号。

% method 2
B2 = bsxfun(@plus, repmat(0:3:27,3,1), [1;2;3])';
B2 = mean(A(B2),2);

方法3:对A中的元素进行分组,然后根据分组应用splitapply。您可以自由更改分组模式。

% method 3
B3 = repmat(1:10,3,1);
B3 = splitapply(@mean, A,B3(:));
相关问题