移动平均滤波基于统计规律,将连续的采样数据看成一个长度固定为N的队列,在新的一次测量后,上述队列的首数据去掉,其余N-1个数据依次前移,并将新的采样数据插入,作为新队列的尾;然后对这个队列进行算术运算,并将其结果做为本次测量的结果。
在信号处理的时候,常用到移动平均滤波器进行去噪,假设输入为x,输出为y,则移动平均滤波器的计算公式如下所示:

Fs = 1000; %采样率 N = 1000; %采样点数 n = 0:N-1; t = 0:1/Fs:1-1/Fs; %时间序列 Signal_Original_1 =sin(2*pi*10*t)+sin(2*pi*20*t)+sin(2*pi*30*t); Noise_White_1= [0.3*randn(1,500), rand(1,500)]; %前500点高斯分部白噪声,后500点均匀分布白噪声 Mix_Signal_1 = Signal_Original_1 + Noise_White_1; %构造的混合信号 Signal_Original_2=[zeros(1,100),20*on
es(1,20),-2*on es(1,30),5*on es(1,80),-5*on es(1,30),9*on es(1,140), -4*on es(1,40), 3*on es(1,220), 12*on es(1,100), 5*on es(1,20), 25*on es(1,30), 7 *on es(1,190)]; Noise_White_2 = 0.5*randn(1,1000); %高斯白噪声 Mix_Signal_2 = Signal_Original_2 + Noise_White_2; %构造的混合信号
%**************************************************************************************** % % 信号Mix_Signal_1 和 Mix_Signal_2 分别作移动平均滤波 % %*************************************************************************************** %混合信号 Mix_Signal_1 移动平均滤波 figure(3); b = [1 1 1 1 1 1]/6; Signal_Filter = filter(b,1,Mix_Signal_1); subplot(4,1,1); %Mix_Signal_1 原始信号 plot(Mix_Signal_1); axis([0,1000,-4,4]); title('原始信号 '); subplot(4,1,2); %Mix_Signal_1 移动平均滤波后信号 plot(Signal_Filter); axis([0,1000,-4,4]); title('移动平均滤波后的信号'); %混合信号 Mix_Signal_2 移动平均滤波 b = [1 1 1 1 1 1]/6; Signal_Filter = filter(b,1,Mix_Signal_2); subplot(4,1,3); %Mix_Signal_2 原始信号 plot(Mix_Signal_2); axis([0,1000,-10,30]); title('原始信号 '); subplot(4,1,4); %Mix_Signal_2 移动平均滤波后信号 plot(Signal_Filter); axis([0,1000,-10,30]); title('移动平均滤波后的信号');
