首页 > 信号处理 > 匹配滤波器

匹配滤波器

2012年7月30日 发表评论 阅读评论

学数字通信原理的时候就会学到,如果一个信号,传输过程中加了白噪声,然后我们接收到这个信号后,需要对这个信号进行采样,我们想要的结果是想要在时刻Ts对这个加了噪的信号进行采样,使得在Ts时刻采样点的信噪比最大;通信原理课本告诉我们如果要达到这个目的,那么就要在采样前先把信号通过一个匹配滤波器,然后再在Ts时刻采样,匹配滤波器可以让你的信噪比达到最大。

匹配滤波器通过使滤波器和信号取得某种一致性,使得在Ts时刻信号出现某一尖峰,这样来实现抑制噪声。额。。匹配滤波器的推导这里就不说了,因为什么地方都可以查得到,反正就是假设信号是x(t),那么匹配滤波器的系统响应函数就是:

\(H(\omega)=KX(\omega)\times e^{-2\pi j \omega T_s}\)

反傅里叶一下就是:

h(t) = Kx(Ts-t)*

简单点说就是加了噪的信号s(t) = x(t)+n(t)和h(t)卷积一下,然后就发现在Ts处可以取得最大信噪比了(或者说一个尖峰),n(t)是白噪声。

然后如果一个数字通信系统传输0和1的波形是不一样的(喂,这不是一定的么!) ,那么我们就对每一种波形分别设计相应的匹配滤波器,信号来了直接同时送入这些滤波器,假设传输的是0,那么0的波形对应的匹配滤波器可以达到最大信噪比,而1的波形对应的匹配滤波器处你采样得到的就是没啥信号。

 程序在文中的最后,先看下图:
 我们的Ts=10,原信号x(t)是一个正弦信号,sin(t)的幅度是-1到1,然后我们加了一个幅度是-10到10的白噪声,基本就把原信号盖过了,通过sin(t)设计出匹配滤波器h,卷积后,我们发现可以在Ts=10处得到一个尖峰!!这就是匹配滤波器的威力!!如果你用的是单调的原始信号的话,信噪比可以更高,加上个更加大幅度的噪声都可以准确的检测出来!

再看看下面这幅图:

我们原本设计匹配滤波器的时候还是根据上面那个sin(t)来设计的,但是如果这一边突然来了的信号是cos(t),我们依旧在t=Ts=10处采样,这是我们就知道送来的信号不是我们想要的信号。

其实说白了,所谓的匹配滤波器,就是滤波器必须要匹配某个特定信号才有用,换了别的信号,滤波器也就没用了~

如果要问直观上怎么理解匹配滤波器的作用,为什么在特定信号下可以实现信噪比最大,直观上的话确实可以理解为什么可以实现增强,但是怎么理解成为最强信噪比这个我还没想好。是这样的,假设直接令Ts=0,K=1,那么匹配滤波器的幅度响应就是原信号福利叶变换的共轭,匹配滤波器的幅度响应和原信号的傅里叶变换的幅度是相同的,那么就是说原本信号中频率幅度大的部分就可以得到很好的增强,而频率本身就不强的那一段就会得到抑制,而相位上的正好相反,可以使得滤波器出来的信号的相位为0,结果当然就是信号的相干叠加啦~ 

function pipei_filter()
%信噪比最大点
ts = 10;
%定义域
point1 = 0;
point2 = 30;
ter = 0.01;
t = point1 : ter : point2;
%x表达式
x = sin(t);

%%
subplot(411);
plot(t,x);
title('原信号')
h = fliplr(x);

subplot(412);
plot(-t+ts,h);
title('匹配滤波器h')

%%加噪声
noise = 10*rand(1,length(t));
s = x + noise;
subplot(413)
plot(t,s);
title('原信号加噪后')
%%
s = [zeros(1,length(0 : ter : ts)) s];
y = conv(s,h);
subplot(414)
plot(-(point2-point1):ter:(point2-point1)+ts+ter,y);
title('采样')
hold on;
d = linspace(min(y),max(y),100);
xx = ts * ones(1,length(d));
plot(xx,d,'r');

【完】

本文内容遵从CC版权协议,转载请注明出自http://www.kylen314.com

  1. 本文目前尚无任何评论.
验证码:2 + 0 = ?

友情提示:留言可以使用大部分html标签和属性;

添加代码示例:[code lang="cpp"]your code...[/code]

添加公式请用Latex代码,前后分别添加两个$$