平滑与平均滤波
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
平均滤波器和平滑滤波器的简单区别及应用
1 概述
平均滤波器是在Z频域上等值采样,采样点均匀分布于单位圆上,即在2pi 的区间内均匀等分,得到的FIR,由于等分点,也称梳状滤波器。平滑滤波器中最简单的一种表示:h(n)=1/N (n=0 1 2 …,N-1.) ,既而h(n)的Z变换得到H(z)=(1/N)((1-Z^(-N))/(1-Z^(-1))) 此也即最简单的梳状滤波器。
本文研究的对象即是最简单的梳状滤波器,即上式。研究其具有的频率特性,以及杂乱的多频率信号通过此滤波器的频率响应。滤波器的阶数越高,值越均匀,滤波效果越好。本文取的输入信号为三种频率成分的混合x=sin(2*pi*f1*t)+0.5*cos(2*pi*f2*t)+0.5*sin(2*pi*f3*t) 研究滤波器的阶数为5阶。通过研究最简单的梳状滤波器,可以很轻松的理解复杂一些的梳状滤波器,如精确去除工频和谐波干扰的陷波滤波器。为了得到精确地某一信号及谐波分量的滤波器。
平滑滤波器是一种低通滤波器,是在空间域实现的一种滤波器。通过缩小高频,扩大低频可以去除某些噪声。同样滤波器的阶数越高,值越均匀,滤波效果越好。平滑滤波器是一种建立在多项式最小平方拟合基础上的滤波器,对信号滤波时,实际上是拟合低频成分,而将高频成分“平滑出去”。一个典型的应用是去除基线漂移现象。由于基线漂移由于低频信号影响,现在用平滑滤波器拟合该低频信号,然后再用原信号减去该拟合出的低频信号,即得到去除基线漂移的信号。
平滑滤波器主要是为了克服平均滤波器在同样的阶数的情况下,平均滤波器的截止频率过低的问题,即低通通带在频率轴上较短的问题。
本文同样采取5阶滤波器,采用输入信号为三种频率成分的混合x=sin(2 *pi*f1*t)+0.5*cos(2*pi*f2*t)+0.5*sin(2*pi*f3*t),然后相减得到想要的信号。采取同样的阶数和同样的输入信号是为了形成鲜明的对比,便于比较。
2 MATLAB程序和比较结果
2.1 平均滤波器(所有程序完全个人创作)
clear all;
% H(z)=(1/N)((1-Z^(-N))/(1-Z^(-1))) 最简单的梳状滤波器的频率响应和极零图;
M=512;
b=[1 0 0 0 0 -1]; %N=5
a=[1 -1];
[h,f]=freqz(b,a,M,'whole',50); %以50Hz为采样频率求出滤波器频率响应%hb=impz(b,a,31);
subplot(2,2,1);
zplane(b,a);
%stem(hb);
subplot(2,2,2);
plot(f,20*log10((1/5)*abs(h)));
xlabel('频率/Hz');ylabel('振幅/dB');grid on;
subplot(2,1,2),plot(f,180/pi*unwrap(angle(h)));
xlabel('频率/Hz');ylabel('相位/^o');grid on;
f1=1;f2=10;f3=20; %输入信号的三种频率成分
t=0:1/50:3; %时间序列
x=sin(2*pi*f1*t)+0.5*cos(2*pi*f2*t)+0.5*sin(2*pi*f3*t); %输入信号
hb=impz(b,a,31);
y=fftfilt(hb,x); %采用fftfilt 对输入信号滤波
figure(2);
subplot(2,1,1), plot(t,x),title('输入信号'); %绘出输入信号波形
subplot(2,1,2),plot(t,y) %绘出输出信号波形
title('输出信号'),xlabel('时间/s');
分析:
此上两图为程序运行结果。
Figure 1可以看到5阶滤波器的Z域的零极点。
以50Hz为采样频率求出的滤波器频率响应,包括幅频和相频响应。
Figure 2 中上面一个图形即输入信号x=sin(2*pi*f1*t)+0.5*cos(2*pi*f2*t)+0.5*sin(2*pi*f3*t)
下面的图形即为5阶梳状滤波器的响应后的输出信号。
输入信号的三种频率成分f1=1;f2=10;f3=20; 输出只有f1的频率成分,其他两
种被滤掉,这是由于
可以看到10hz 已经在阻带。
通带的带宽较窄。
2.2 平滑滤波器(所有程序完全个人创作)
clear all;
M=512;
b=sgolay(2,5); %设计5点的2次多项式
h=[b(3) b(8) b(13) b(18) b(23)];
[H,f]=freqz(h,1,512,'whole',50); %以50Hz为采样频率求出滤波器频率响应
subplot(2,1,1),plot(f,20*log10(abs(H)))
xlabel('频率/Hz');ylabel('振幅/dB');grid on;
subplot(2,1,2),plot(f,180/pi*unwrap(angle(H)))
xlabel('频率/Hz');ylabel('相位/^o');grid on;
f1=1;f2=10;f3=20; %输入信号的三种频率成分
t=0:1/50:3; %时间序列
x=sin(2*pi*f1*t)+0.5*cos(2*pi*f2*t)+0.5*sin(2*pi*f3*t);%输入信号
%y=filter(h,1,x); %可以采用过滤器进行滤波
y=fftfilt(h,x); %采用fftfilt 对输入信号滤波
figure(2);
subplot(2,2,1);
plot(t,x);title('输入信号'); %绘出输入信号波形
subplot(2,2,2);
plot(t,y) ; %绘出输出信号波形
title('输出信号'); xlabel('时间/s');
p=x-y;
subplot(2,1,2),plot(t,p) ; %绘出相减后的输出信号波形
title('相减后的输出信号'),xlabel('时间/s');