在圆圈上移动平均值

sha*_*aia 5 matlab mean

有没有办法以一种方式计算移动平均值,使得数组开头和结尾的值与对端的值平均?

例如,而不是这个结果:

A=[2 1 2 4 6 1 1];
movmean(A,2)
ans = 2.0 1.5 1.5 3.0 5 3.5 1.0
Run Code Online (Sandbox Code Playgroud)

我想获得向量[1.5 1.5 1.5 3 5 3.5 1.0],因为初始数组元素2将与结束元素1平均.

gno*_*ice 5

推广到任意窗口大小N,这是您可以movmean按照自己的方式添加循环行为的方法:

movmean(A([(end-floor(N./2)+1):end 1:end 1:(ceil(N./2)-1)]), N, 'Endpoints', 'discard')
Run Code Online (Sandbox Code Playgroud)

对于给定AN = 2,你会得到:

ans =

1.5000    1.5000    1.5000    3.0000    5.0000    3.5000    1.0000
Run Code Online (Sandbox Code Playgroud)