当前位置:文档之家› 信号检测实验报告

信号检测实验报告

Harbin Institute of Technology匹配滤波器实验报告课程名称:信号检测理论院系:电子与信息工程学院姓名:高亚豪学号: 14SD05003授课教师:郑薇哈尔滨工业大学1. 实验目的通过Matlab 编程实现对白噪声条件下的匹配滤波器的仿真,从而加深对匹配滤波器及其实现过程的理解。

通过观察输入输出信号波形及频谱图,对匹配处理有一个更加直观的理解,同时验证匹配滤波器具有时间上的适应性。

2. 实验原理对于一个观测信号()r t ,已知它或是干扰与噪声之和,或是单纯的干扰,即 这里()r t ,()u t ,()n t 都是复包络,其中0a 是信号的复幅度,()u t 是确知的归一化信号的复包络,它们满足如下条件。

其中E 为信号的能量。

()n t 是干扰的均值为0,方差为0N 的白噪声干扰。

使该信号通过一个线性滤波系统,有效地滤除干扰,使输出信号的信噪比在某一时刻0t 达到最大,以便判断信号的有无。

该线性系统即为匹配滤波器。

以()h t 代表系统的脉冲响应,则在信号存在的条件下,滤波器的输出为 右边的第一项和第二项分别为滤波器输出的信号成分和噪声成分,即 则输出噪声成分的平均功率(统计平均)为而信号成分在0t 时刻的峰值功率为输出信号在0t 时刻的总功率为上式中输出噪声成分的期望值为0,即0E[()]0t ϕ=,因此输出信号的功率成分中只包含信号功率和噪声功率。

则该滤波器的输出信噪比为根据Schwartz 不等式有当且仅当*0()()h cu t ττ=-时等号成立,其中c 为任意非零复常数。

此时获得最大信噪比,即对该式进行0t t τ=-的变量置换,得到因此,()u t 只有在0t t =时刻之前结束,才能使信噪比达到最大值。

即观察时刻0t 需设置在输入信号结束之后,此时022|()|d |()|d 1t u t t u t t +∞-∞-∞==⎰⎰。

则最大信噪比为综上所述,匹配滤波器的单位冲激响应为*0()()m h cu t ττ=-,对其进行傅里叶变换得到它的频率响应为0j2*()()e ft m H f cU f π-=,其中()U f 输入信号()u t 傅里叶变换。

从匹配滤波器的频率响应可以看出,滤波处理不仅对信号的幅度进行了匹配,使输入信号较强的频率成分得到较大的加权,而且将输入信号的非线性相位补偿掉,使输出信号具有线性相位。

3. 实验步骤(1)设定采样频率、噪声功率等仿真参数,产生输入信号的波形()u t 。

(2)根据()u t 得到匹配滤波器的单位冲激响应()h t 。

(3)生成输入信号,它有()u t 及其延迟叠加构成,即输入信号中存在两个回波。

(4)对输入信号和单位脉冲响应分别进行N 点FFT ,其中N 不小于输入信号和冲激响应的点数之和,将它们的结果相乘,在进行FFT 的逆变换,得到滤波器的输出信号。

(5)生成输出信号的波形图即频谱图。

检测输出信号的两个峰值,将它们出现的时间与理论值比较,验证滤波器在时间上的适应性。

4. 实验结果与分析本实验中采用的仿真参数如下:采样频率为100KHz ,载波频率为2KHz ,信号脉冲宽度为0.015s ,第二个回波信号延迟为0.025s 。

首先,在无噪声干扰的条件下,将有限时间的正弦信号及其延迟输入匹配滤波器,得到各部分仿真波形如下所示:计算得到的延迟结果为0.025s τ=,与仿真设定值相等。

从图像中可以看出,匹配滤波器的输出有两个峰值,分别对应两个输入信号结束的时刻,且它们之间的时间间隔等于输入信号的延迟时间,验证了匹配滤波器具有时间上的适应性。

即当信号存在延迟时,不需要改变滤波器的形式,只需将观察时刻延迟相应的时间即可。

输出信号的幅度谱与输入信号相比,有了更强的对比度,即在较大的频率分量上得到了较大加权,并且输出信号具有线性相位,验证了匹配处理对输入信号进行了幅度匹配和相位匹配。

在有噪声干扰的条件下,仿真得到的结果如下所示,其中噪声平均功率为0.3:τ=。

其中滤波器的频率响应与上面的相同,计算得到的延迟结果为0.025s在此不再列出。

以上结果说明在该噪声环境下仍能够实现信号的匹配滤波。

只是输出信号的相位不再是线性的,这是由于滤波器无法对噪声的相位进行补偿。

仍在该噪声条件下,将输入信号改为线性调频信号,得到的仿真结果为:其它条件不变,只将输入信号改为m序列的二相编码,其码元速率为2Kb/s,伪码周期为31,得到如下结果:可见,当改变信号波形时,进行相应的匹配滤波可以得到相似的结果,与理论推导结果一致,从而验证了匹配滤波器的幅度和相位匹配特性,以及时间适应性。

5.实验仿真程序clear all;close all;clc;%仿真参数设定fs = 1e5; %采样频率100kHzA = 0.3; %设置噪声平均功率fo = 2e3; %载波频率2kHzTo = 0.015; %调制脉冲长度0.015sts = 1 / fs; %采样周期td = 0.01; %第二个回波的延时%df = 1e4; %线性调频信号频率变化率%rb = 2e3; %二相编码的码元速率tu = 0 : ts : (To - ts);% mseq = m_sequence([0, 0, 1, 0, 1], 1);% [u, tu] = wave(mseq, fs, rb); %m序列二相编码%u = cos(2 * pi * (fo + df * tu) .* tu); %线性调频信号u = cos(2 * pi * fo * tu); %回波信号为正弦信号h = fliplr(u); %匹配滤波器单位脉冲响应x = [u, zeros(1, fix(td / ts)), u] + A * randn(1, 2 * size(u, 2) + fix(td / ts));N1 = size(x, 2);N2 = size(h, 2);M = N1 + N2 - 1; %傅里叶变换的点数X = fft(x, M);H = fft(h, M);Y = X .* H;y = ifft(Y, M);[C, I1] = max(y);y1 = y;y1(I1 - 10 : I1 + 10) = 0;[C, I2] = max(y1);tao = ts * abs(I1 - I2)%仿真图像t = 0 : ts : ts * (M - 1);figure(1);tx = 0 : ts : ts * (N1 - 1);plot(tx, x);axis([0, 0.045, -2, 2]);title('匹配滤波器输入信号波形(两个回波)');xlabel('时间/s');ylabel('幅度/V'); figure(2);fd = fs / M;f = 0 : fd : (fs - fd);subplot(2, 1, 1);plot(f, abs(H));title('匹配滤波器幅频响应');xlabel('频率/Hz');ylabel('幅度');subplot(2, 1, 2);plot(f, angle(H));title('匹配滤波器相频响应');xlabel('频率/Hz');ylabel('角度/rad');figure(3);plot(t, y);title('匹配滤波器输出');xlabel('时间/s');ylabel('幅度/V');figure(4);subplot(2, 1, 1);plot(f, abs(X));title('输入信号与输出信号的幅频特性比较');xlabel('频率/Hz');ylabel('幅度');subplot(2, 1, 2);plot(f, abs(Y));xlabel('频率/Hz');ylabel('幅度');figure(5);subplot(2, 1, 1);plot(f, angle(X));title('输入信号与输出信号的相频特性比较');xlabel('频率/Hz');ylabel('角度/rad');subplot(2, 1, 2);plot(f, angle(Y));xlabel('频率/Hz');ylabel('角度/rad');%产生m序列function mseq = m_sequence(fbconnection, period)n = length(fbconnection);N = 2^n - 1; %m序列的长度for k = 1 : periodregister = [zeros(1,n - 1) 1]; %定义移位寄存器的初始状态mseq(1 + N * (k - 1)) = register(n); %m序列的第一个输出码元for i = 2 + (N * (k - 1)) : (N * k)newregister(1) = mod(sum(fbconnection.*register),2);for j = 2 : nnewregister(j) = register(j-1);end;register = newregister; %移位后的寄存器mseq(i) = register(n); %新的寄存器输出endend%对m序列进行二相编码function [y, t] = wave(code, fs, rb)T = fs / rb;N = length(code);for i = 1 : N;if code(i) == 1;for j = 1 : T;y(T * (i - 1) + j) = 1;endendif code(i) == 0;for j = 1 : T;y(T * (i - 1) + j) = -1;endendendy = [y, y(T * N)];t = 0 : (1 / fs) : (N / rb);。

相关主题