我确信这对信号人来说是一个微不足道的问题。我需要在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号窗口滑动,并且不包含任何以前的元素......也许我错过了它。看看我的例子......
谢谢!
答案 0 :(得分:3)
如果原始数据的大小始终是widowsize的倍数:
mean(reshape(origSignal,windowSize,[]));
另外,在一行中:
mean(reshape(origSignal(1:end-mod(length(origSignal),windowSize)),windowSize,[]))
这和以前一样,但信号只到最后减去额外值小于windowsize。