匹配滤波器设计匹配滤波器是一种检测噪声中某个确定信号是否存在的最佳滤波方法。典型问题:有一个已知的有限时长的确定信号s(t),我们希望从接收信号r(t)中检测它是否出现。最佳估值的准则:输出信噪比达到最大。应用:通信、雷达中最佳接收技术。匹配滤波器模型:y(t)=x(t)*h(t)=s(t)*h(t)+n(t)*h(t)s(t)为已知的有限时长的发射信号,x(t)为接收信号,n(t)是白噪声,我们希望设计滤波器h(t),使输出y(t)有最大值。这一处理过程如下图所示,可见,在t=t0时刻,信号最大限度地越过背景噪声。这种期望下的最佳滤波器,容易看出它的冲激响应为h(t)=ks(t0-t),它实际上是信号的反转平移形式,如下图:(a)测距离:发射信号s(t):高斯白噪声n(t):接收到的带噪声信号x(t):冲击响应h(t):卷积法结果:(b)测速度原理:多普勒效应当波源靠近观察者时,接收信号频率变高;波源远离观察者时,接收信号频率变低。靠近时频率远离时频率v:波在介质中移动速度v0:观察者移动速度vs:发射源移动速度实验时,有用发射信号撞到运动目标后,反射回来的信号频率已经变化,此时要想用匹配滤波器将信号检测出来,可以使匹配滤波器的频率变化,f=1:0.1:2.5,当某一个输出有最大值时,此匹配滤波器的频率就是接受信号的频率。为了编程方便,我就取了三个频率,f=0.5、1、2。实验结果:一句话总结:测距离:将发射信号以y轴做镜像,然后与接收信号做卷积即可。测速度:改变匹配滤波器的频率,然后和接收信号卷积,输出峰值最大时匹配滤波器的频率就是所求的。心得体会:开学时,老师就说这课最后有四个作业,大家做好了可以上台讲,当时我就很心动,就想上去讲一讲。后来快要结课了,我才把匹配滤波器做了,不过,缺陷很多:1)匹配滤波器的准则没弄懂2)实验不完善或不合理(所用的频率太低——1hz)通过自己去做,发现这个东西也没有想象的那么难,而且这个上台的机会很难得,我很庆幸我得到这个机会,锻炼了我的胆量和培养了我的学术能力,以后有这样的机会,一定要抓住,多锻炼自己。Matlab代码:%%%%%%%%%%%%%%%%%%%%%%匹配滤波器设%%%%%%%%%%%%%%%%%%clc;clearall;closeall;%%%%%%%%%%%%%%%%%%%发射信%%%%%%%%%%%%%%%%%%%%%%%%t=linspace(0,2*pi,100);st=10*sin(t);figure();plot(t,st);title('发射信号');%%%%%%%%%%%%%%%%%%%高斯白噪声%%%%%%%%%%%%%%%%%%%%%%nt=randn(1,100);figure();plot(nt);title('高斯白噪声');%%%%%%%%%%%%%%%%%%%%接收信号%%%%%%%%%%%%%%%%%%%%%%st1=st+nt;%叠加噪声figure();plot(st1);title('接收信号');%%%%%%%%%%%%%%%%匹配滤波器的冲击响应%%%%%%%%%%%%%%%%%%ht=zeros(1,100);fori=1:100ht(1,i)=st(1,100-i+1);endfigure();plot(ht);title('匹配滤波器冲击响应');%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%bu0=zeros(1,200);st1=[st1,bu0];ht=[ht,bu0];yt=fft(ht).*fft(st1);%卷积运算yt1=ifft(yt);figure();plot(abs(yt1));title('测距离匹配');%%%%%%%%%%%%%%%%%%%接收信号的频率变化%%%%%%%%%%%%%%%%%t1=linspace(0,pi,100);t2=10*sin(2*t1);st2=t2+nt;figure();plot(st2);title('频率变化后的接收信号');%%%%%%%%%%%%%%以下是改变匹配滤波器的频率去测速度%%%%%%%%%%%%%%%%%%%%%%%某一个频率结果输出最大%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%频率1a=0.5%%%%%%%%%%%%%%%%%%%%%t3=linspace(0,4*pi,400);nt1=randn(1,400);st3=10*sin(0.5*t3);st3=st3+nt1;bu1=zeros(1,300);%卷积运算要求长度对等补0st21=[st2,bu1]yt2=fft(st3).*fft(st21);%%%%%%%%%%%%%%%%%%%频率2a=1%%%%%%%%%%%%%%%%%%%%%t4=linspace(0,2*pi,200);nt2=randn(1,200);st4=10*sin(t4);st4=st4+nt2;bu2=zeros(1,100);st31=[st2,bu2];yt3=fft(st4).*fft(st31);%%%%%%%%%%%%%%%%%%%频率3a=2%%%%%%%%%%%%%%%%%%%%%%t5=linspace(0,pi,100);nt3=randn(1,100);st5=10*sin(2*t5);st5=st5+nt3;yt4=fft(st2).*fft(st5);%%%%%%%%%%%%%%三个频率画在一幅图%%%%%%%%%%%%%%%%%%%%%%figure();plot(abs(ifft(yt2)),'k');title('测速结果');holdon;plot(abs(ifft(yt3)),'r');plot(abs(ifft(yt4)));legend('a=2','a=1','a=0.5');holdoff;%%%%%%%%%%%%%%%%%%%%结束%%%%%%%%%%%%%%%%%%%%%%%%%