匹配滤波器
学数字通信原理的时候就会学到,如果一个信号,传输过程中加了白噪声,然后我们接收到这个信号后,需要对这个信号进行采样,我们想要的结果是想要在时刻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