Matlab 列中固定间隔的平均值

Matlab 列中固定间隔的平均值,matlab,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.99126838

其思想是计算列中固定间隔的平均值

例如,
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:直接将
A
中的元素分成三组,然后
表示

% method 1
B1 = reshape(A,3,10);
B1 = mean(B1,1)';
方法二:建立指标矩阵,求各组指标的
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(:));

首先,感谢您的回复。然而,当向量数不能整除时,整形函数可能存在一些问题。我确实发现r0=平均值(缓冲区(A,3))是解决我的问题的更好方法。