向量的平均非连续段

Average on contiguos segments of a vector

我敢肯定这对于信号人员来说是一个微不足道的问题。我需要在 Matlab 中找到函数,该函数输出向量的 windowsize= l 的连续段的平均值,例如

origSignal: [1 2 3 4 5 6 7 8 9];
windowSize = 3;
output = [2 5 8]; % i.e. [(1+2+3)/3 (4+5+6)/3 (7+8+9)/3]

编辑:How can I (efficiently) compute a moving average of a vector? 中提供的选项似乎都不起作用,因为我需要 3 号幻灯片的 window,并且不包含任何先前的元素......也许我想念它。看看我的例子...

谢谢!

如果原始数据的大小总是widowsize的倍数:

mean(reshape(origSignal,windowSize,[]));

否则,一行:

mean(reshape(origSignal(1:end-mod(length(origSignal),windowSize)),windowSize,[]))

这个和之前一样,只是信号只取到最后减去小于windowsize的额外值