匹配滤波器的仿真——原理说明与仿真

本文详细阐述了匹配滤波器的公式推导,包括其目的、信噪比优化原理,以及如何通过频域理解其工作原理。讲解了匹配滤波器的冲激响应、输出信噪比特性、时间适应性和与自相关的联系。通过实例展示了如何在实际场景中使用和调整匹配滤波器。
摘要由CSDN通过智能技术生成

(1) 匹配滤波器的公式推导与解释

解释实际上是要分三步进行:首先要说明要用匹配滤波器干了一个什么事,其次要通过匹配滤波器要做的事说明为什么匹配滤波器的公式是这个形式,最后又要从直观的角度来说明匹配滤波器的这个公式为什么能让它做成这个事情。

1.使用匹配滤波器的目的

  • 当有用信号通过信道传输后,混杂有许多高斯白噪声,信号被噪声淹没。通过匹配滤波器提高信噪比,使有用信号在时域上更加明显,更易被检测到。

2.推导匹配滤波器的公式

  • 推导公式从匹配滤波器要实现的功能出发:提高信噪比。
  • 一个实信号 s ( t ) s(t) s(t) 通过 AWGN 信道,得到 r ( t ) = s ( t ) + n ( t ) r(t) = s(t) + n(t) r(t)=s(t)+n(t)。其中 n ( t ) n(t) n(t) 是高斯白噪声。同时已知的高斯白噪声的相关函数 R ( τ ) = N 0 2 δ ( τ ) R(\tau) = \displaystyle\frac{N_0}{2}\delta(\tau) R(τ)=2N0δ(τ)
    让被污染的信号通过一个时域冲激响应为 h ( t ) h(t) h(t) 的系统并在 t 0 t_0 t0 时刻采样可以得到
    y ( t 0 ) = ∫ − ∞ ∞ r ( τ ) h ( t 0 − τ ) d τ = ∫ − ∞ ∞ s ( τ ) h ( t 0 − τ ) d τ + ∫ − ∞ ∞ n ( t ) h ( t 0 − t ) d t = y s ( t 0 ) + y n ( t 0 ) \begin{aligned} y(t_0) &= \int_{-\infin}^{\infin}r(\tau)h(t_0-\tau)d\tau\\ &=\int_{-\infin}^{\infin}s(\tau)h(t_0-\tau)d\tau + \int_{-\infin}^{\infin}n(t)h(t_0-t)dt\\ &=y_s(t_0) + y_n(t_0) \end{aligned} y(t0)=r(τ)h(t0τ)dτ=s(τ)h(t0τ)dτ+n(t)h(t0t)dt=ys(t0)+yn(t0)
    很容易发现, y s ( t 0 ) y_s(t_0) ys(t0) 是有用信号, y n ( t 0 ) y_n(t_0) yn(t0) 是噪声信号,由此定义信噪比 S N R = y s 2 ( t 0 ) E [ y n 2 ( t 0 ) ] SNR = \displaystyle\frac{y_s^2(t_0)}{E[y_n^2(t_0)]} SNR=E[yn2(t0)]ys2(t0)
    同时可以推导出 E [ y n 2 ( t 0 ) ] E[y_n^2(t_0)] E[yn2(t0)] 的表达式
    E [ y n 2 ( t 0 ) ] = E [ ∫ − ∞ ∞ n ( τ ) h ( t 0 − τ ) d τ ∫ − ∞ ∞ n ( t ) h ( t 0 − t ) d t ] = ∫ − ∞ ∞ ∫ − ∞ ∞ N 0 2 δ ( t − τ ) h ( t 0 − τ ) h ( t 0 − t ) d τ d t = N 0 2 ∫ − ∞ ∞ h 2 ( t 0 − τ ) d τ \begin{aligned} E[y_n^2(t_0)] &= E[\int_{-\infin}^{\infin}n(\tau)h(t_0-\tau)d\tau\int_{-\infin}^{\infin}n(t)h(t_0-t)dt]\\ &=\int_{-\infin}^{\infin}\int_{-\infin}^{\infin}\frac{N_0}{2}\delta(t-\tau)h(t_0-\tau)h(t_0-t) d\tau dt\\ &=\frac{N_0}{2}\int_{-\infin}^{\infin}h^2(t_0-\tau) d\tau \end{aligned} E[yn2(t0)]=E[n(τ)h(t0τ)dτn(t)h(t0t)dt]=2N0δ(tτ)h(t0τ)h(t0t)dτdt=2N0h2(t0τ)dτ
    回代并求出最大值
    S N R = 2 [ ∫ − ∞ ∞ s ( τ ) h ( t 0 − τ ) d τ ] 2 N 0 ∫ − ∞ ∞ h 2 ( t 0 − τ ) d τ ≤ 2 ∫ − ∞ ∞ s 2 ( τ ) d τ ∫ − ∞ ∞ h 2 ( t 0 − τ ) d τ N 0 ∫ − ∞ ∞ h 2 ( t 0 − τ ) d τ = 2 N 0 ∫ − ∞ ∞ s 2 ( τ ) d τ \begin{aligned} SNR&=\displaystyle\frac{2[\displaystyle\int_{-\infin}^{\infin}s(\tau)h(t_0-\tau)d\tau]^2}{N_0\displaystyle\int_{-\infin}^{\infin}h^2(t_0-\tau)d\tau}\le \displaystyle\frac{2\displaystyle\int_{-\infin}^{\infin}s^2(\tau)d\tau\displaystyle\int _{-\infin}^{\infin}h^2(t_0-\tau)d\tau}{N_0\displaystyle\int_{-\infin}^{\infin}h^2(t_0-\tau)d\tau}\\ &=\displaystyle\frac{2}{N_0}\displaystyle\int_{-\infin}^{\infin}s^2(\tau)d\tau \end{aligned} SNR=N0h2(t0τ)dτ2[s(τ)h(t0τ)dτ]2N0h2(t0τ)dτ2s2(τ)dτh2(t0τ)dτ=N02s2(τ)dτ
    上面的式子在放缩的过程中使用了柯西不等式,所以想要达到最大值就需要根据柯西不等式等号成立的条件得到 h ( t 0 − τ ) = s ( τ ) ⇒ h ( t ) = k s ( t 0 − t ) h(t_0-\tau) = s(\tau)\Rightarrow h(t) = ks(t_0-t) h(t0τ)=s(τ)h(t)=ks(t0t)

3.从频域直观理解匹配滤波器的效果

  • 由时域表达式可以推出频域表达式 H ( ω ) = k S ∗ ( ω ) e − j ω t 0 H(\omega) = kS^*(\omega)e^{-j\omega t_0} H(ω)=kS(ω)ejωt0,可以发现有 ∣ H ( ω ) ∣ = k ∣ S ( ω ) ∣ |H(\omega)| = k|S(\omega)| H(ω)=kS(ω),也就是说系统的增益和信号的幅度谱是一样的。
  • 由于白噪声的频谱是常数,就是说在哪里都一样,所以系统在信号幅度谱更大的地方(含有的有用信号会更多)使用更大的增益就可以让有用信号在总的信号中增长的更多,也就是说提高了信噪比。

(2) 匹配滤波器的冲激响应

  • 由之前的推证可以知道,冲激响应的时域表达式为 h ( t ) = k s ( t 0 − t ) h(t) = ks(t_0-t) h(t)=ks(t0t)

  • 注意 h ( t ) h(t) h(t) t 0 t_0 t0 值选取需要遵循的准则:
    因果关系
    h ( t ) = { s ( t 0 − t ) , t ≥ 0 0 , t < 0 h(t) = \begin{cases} s(t_0-t),t\ge 0\\ 0,t<0 \end{cases} h(t)={s(t0t),t00,t<0
    为了使输入信号的全部都能对输出信号有所贡献,采样时刻 t 0 t_0 t0 应满足 s ( t ) = 0 , t > t 0 s(t)=0,t>t_0 s(t)=0,t>t0。比如信号产生的时间是 [ 0 , 10 μ s ] [0,10\mu s] [0,10μs],采样时刻 t 0 t_0 t0 就至少是 10 μ s 10\mu s 10μs

  • 这里假定采样时刻 T = 12 μ \mu μs,信号带宽 B = 20MHz,信号时宽 TimeWidth = 10 μ \mu μs,信号的采样频率 F s F_s Fs = 50MHz,起始频率为 0Hz。

  • matlab 代码

    %% 产生线性调频波
    TimeWidth = 10e-6;      %脉冲持续时间10us
    T = 8e-6;               %T在8us
    BandWidth = 20e6;       %线性调频信号的频带宽度20MHz
    Fs = 50e6;              %采样频率,注意需要满足奈奎斯特频率
    sample_dot_num = round(TimeWidth * Fs);%表示采样点的个数
    
    f0 = 0;%初始频率
    f1 = f0 + BandWidth;%终止频率
    t=0:1/Fs:TimeWidth;%根据结束时间生成时间序列
    signal = chirp_signal(t,f0,f1);
    plot(t*1e6,signal,'LineWidth',2);
    %% 匹配滤波器的脉冲响应
    %这里 k 假定取 1
    h = signal(end:-1:1);
    t = -t(end:-1:1) + T;
    plot(t*1e6,h,'LineWidth',2);
    
  • 仿真结果

(3) 匹配滤波器的输出信噪比

  • 匹配滤波器的输出功率信噪比只取决于输入信号的能量和白噪声功率谱密度而与输入信号形状和噪声分布规律无关。

  • 这里在仿真时均假定 snr=0,并且通过增添频率移动量保证整体能量基本相等,均为 125.5 125.5 125.5 左右。

  • matlab 代码:

    %% 产生线性调频信号
    TimeWidth = 10e-6;      %脉冲持续时间10us
    BandWidth = 20e6;       %线性调频信号的频带宽度20MHz
    Fs = 50e6;Ts = 1/Fs;    %采样频率,注意需要满足奈奎斯特频率
    N = fix(TimeWidth/Ts);
    f0 = 0;%初始频率
    f1 = f0 + BandWidth;%终止频率
    
    %设定频率偏移量
    f_shifta = 5e6;
    f_shiftb = 10e6;
    t=0:1/Fs:TimeWidth;%根据结束时间生成时间序列
    %采用不同的频率偏移量生成两个能量(几乎)相同的信号
    signal1 = chirp_signal(t,f0+f_shifta,f1);
    signal2 = chirp_signal(t,f0+f_shiftb,f1);
    plot(t*1e6,signal1);
    plot(t*1e6,signal2);
    %% 加入噪声后
    %加入噪声
    snr = 0;
    y1 = awgn(signal1, snr, 'measured');
    y2 = awgn(signal2, snr, 'measured');
    plot(t*1e6,y1);
    plot(t*1e6,y2);
    % 经过匹配滤波器
    mf=fliplr(signal1);     %输入序列取反序(匹配滤波器的脉冲响应)
    sr_noise_mf=conv(mf,y1); %有噪声回波信号匹配滤波(使用脉冲响应和输入信号进行卷积)
    plot((0:length(sr_noise_mf)-1)/Fs*1e6,20*log10(abs(sr_noise_mf)))
    mf=fliplr(signal2);     %输入序列的复共轭(匹配滤波器的脉冲响应)
    sr_noise_mf=conv(mf,y2); %有噪声回波信号匹配滤波(使用脉冲响应和输入信号进行卷积)
    plot((0:length(sr_noise_mf)-1)/Fs*1e6,20*log10(abs(sr_noise_mf)))
    
  • 仿真结果

    可以看到在信号能量基本相等的情况下,通过匹配滤波器后的信噪比最大的位置基本相同。

(4) 匹配滤波器的时间适应性

  • 匹配滤波器对振幅和时延参量不同的信号具有适应性,具体来说就是与信号 s ( t ) s(t) s(t) 相匹配的滤波器的系统函数 H ( ω ) H(\omega) H(ω) ,对于信号 s 1 ( t ) = A s ( t − τ ) s_1(t) = As(t-\tau) s1(t)=As(tτ) 来说也是匹配的,只不过最大输出功率信噪比出现的时刻延迟了 τ \tau τ
  • matlab 代码
    %% 产生线性调频信号
    TimeWidth = 10e-6;      %脉冲持续时间10us
    TimeEmpty = 20e-6;
    BandWidth = 20e6;       %线性调频信号的频带宽度20MHz
    Fs = 50e6;Ts = 1/Fs;    %采样频率,注意需要满足奈奎斯特频率
    N = fix(TimeWidth/Ts);
    
    f0 = 0;%初始频率
    f1 = f0 + BandWidth;%终止频率
    t=0:1/Fs:TimeWidth;%根据结束时间生成时间序列
    signal = chirp_signal(t,f0,f1);
    t_total = linspace(0,2*(TimeEmpty+TimeWidth),2*(TimeEmpty+TimeWidth)/Ts);
    signal_total = [signal(1:end-1),zeros(1,fix(TimeEmpty/Ts)),signal(1:end-1),zeros(1,fix(TimeEmpty/Ts))];
    plot(t_total*1e6,signal_total,'LineWidth',2);
    %% 加入噪声后
    %加入噪声
    snr = 0;
    signal_with_noise = awgn(signal_total, snr, 'measured');
    plot(t_total*1e6,signal_with_noise,'LineWidth',2);
    %% 经过匹配滤波器后(信号波形通过与其对应的匹配滤波器)
    %这里 k 假定取 1
    h=zeros(1,N);
    t1 = fix(TimeWidth/Ts);
    for tt=0:N-1
        h(tt+1)=signal_total(t1-tt);%匹配滤波器
    end
    % 经过匹配滤波器
    sr_noise_mf=conv(h,signal_with_noise); %有噪声回波信号匹配滤波(使用脉冲响应和输入信号进行卷积)
    plot((0:length(sr_noise_mf)-1)/Fs*1e6,20*log10(abs(sr_noise_mf)),'LineWidth',2);
    
  • 仿真结果
    可以看出来,对于有一个时延的信号,使用相同的匹配滤波器会导致输出在信噪比最大的地方也有一个响应的时延。

(5) 匹配滤波器与自相关

  • matlab代码
    %% 产生线性调频信号
    TimeWidth = 10e-6;      %脉冲持续时间10us
    BandWidth = 20e6;       %线性调频信号的频带宽度20MHz
    Fs = 50e6;Ts = 1/Fs;    %采样频率,注意需要满足奈奎斯特频率
    N = fix(TimeWidth/Ts);
    f0 = 0;%初始频率
    f1 = f0 + BandWidth;%终止频率
    t=0:1/Fs:TimeWidth;%根据结束时间生成时间序列
    signal = chirp_signal(t,f0,f1);
    signal = awgn(signal,0,'measured');%这里添加白噪声
    plot(t*1e6,signal,'LineWidth',2);
    %% 匹配滤波
    %计算匹配滤波器的冲激响应函数
    h = zeros(1,N);
    t1 = fix(TimeWidth/Ts);
    for tt=0:N-1
        h(tt+1) = signal(t1-tt);%匹配滤波器
    end
    signal_match = abs(conv(h,signal));
    t_match = (0:length(signal_match)-1)/Fs;
    plot(t_match*1e6,signal_match,'LineWidth',2);
    %% 求自相关函数
    signal_autocorrelation = abs(xcorr(signal));
    t_autocorrelation = (0:length(signal_autocorrelation)-1)/Fs;
    plot(t_autocorrelation*1e6,signal_autocorrelation,'LineWidth',2);
    
  • 仿真结果:
  • 从波形上来看两者是完全相同的,但是一定要注意前提条件。 t = t 0 t=t_0 t=t0 并且噪声 n ( t ) n(t) n(t) 为零均值白噪声的条件下匹配滤波器与相关器的输出是相等的。

(6) 匹配滤波器进行频域滤波

  • matlab 代码

    %% 产生线性调频信号
    TimeWidth = 10e-6;      %脉冲持续时间10us
    BandWidth = 20e6;       %线性调频信号的频带宽度20MHz
    Fs = 50e6;Ts = 1/Fs;    %采样频率,注意需要满足奈奎斯特频率
    N = fix(TimeWidth/Ts);
    f0 = 0;%初始频率
    f1 = f0 + BandWidth;%终止频率
    t=0:1/Fs:TimeWidth;%根据结束时间生成时间序列
    signal = chirp_signal(t,f0,f1);
    
    snr = 0;
    signal_with_noise = awgn(signal, snr, 'measured');  %回波信号实际上就是给原信号增加了噪声
    plot(t*1e6,signal_with_noise,'LineWidth',2);
    
    freq=linspace(0,Fs,N);
    plot(freq*1e-6,fftshift(abs(fft(signal_with_noise(1:end-1)))),'LineWidth',2);
    
    %% 进行匹配滤波
    %计算匹配滤波器的冲激响应函数
    h = zeros(1,N);
    t1 = fix(TimeWidth/Ts);
    for tt=0:N-1
        h(tt+1) = signal(t1-tt);%匹配滤波器
    end
    subplot(311)
    plot(freq*1e-6,abs(fftshift(fft(h)).* fftshift(fft(signal_with_noise(1:end-1)))),'LineWidth',2);
    
    %% 求相关
    temp = abs(ifft(fftshift(fft(h)).* fftshift(fft(signal_with_noise(1:end-1)))));
    temp = [temp,temp(end:-1:1)];
    plot((0:length(temp)-1)*Ts*1e6,temp,'LineWidth',2);
    %% 求匹配
    subplot(313)
    temp = abs(conv(h,signal_with_noise(1:end-1)));
    plot((0:length(temp)-1)*Ts*1e6,temp,'LineWidth',2);
    
  • 仿真结果:

    • 对淹没在 0dB 高斯白噪声中的信号直接进行 FFT,可以看到在频域并不能很好的分出信号。
    • 频域乘积:对加噪信号和匹配滤波器脉冲响应分别进行 FFT 变换,得到两组频谱后点乘然后进行 IFFT 变换即可得出滤波结果。
    • 从时域卷积:让加噪信号和匹配滤波器进行卷积,直接得到结果,可以看得这两种操作使结果 基本相同
雷达是一种利用无线电波进行目标探测和跟踪的设备。它基于雷达原理,利用发射出的脉冲信号与目标反射回来的信号之间的时间和幅度差异来确定目标的方位、距离和速度。 匹配滤波器在雷达信号处理中有着重要的应用。匹配滤波器原理是将预先设置好的特定模板(也称为滤波器),与接收到的雷达回波信号进行卷积计算,以提取出与模板最为接近的目标回波。这种滤波器能够极大地减小噪声的干扰,并增强目标信号的能量,大大提高了信号的可靠性和抗干扰性。 在MATLAB中可以很方便地进行匹配滤波器仿真。首先,我们需要利用MATLAB生成雷达信号的模拟回波数据。然后,可以设置好匹配滤波器的模板函数,如正弦函数或高斯函数等。接着,利用MATLAB中的卷积函数对模拟回波数据与模板函数进行卷积计算,得到经过匹配滤波器处理后的信号。 仿真结果可以使用MATLAB的绘图函数进行可视化展示。可以绘制原始回波信号、模板函数、以及经过匹配滤波器处理后的信号,以观察信号处理效果。同时,可以计算出峰值信噪比和信号的相关性等参数来评估匹配滤波器的性能。 通过MATLAB的仿真,我们可以在虚拟环境中对雷达信号的处理进行实验,从而更好地理解和研究雷达原理匹配滤波器的工作原理。这对于雷达系统的设计和性能优化具有重要意义,并且有助于提高雷达目标检测和跟踪的准确性和可靠性。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值