匹配滤波&最大信噪比

目录

问题

LFM信号的构建

匹配滤波

 噪音分析

原理分析

 代码


问题

LFM信号的构建

我们根据其表达式,最终用matlab可以画出该信号的波形(实部和虚部)以及他的幅度谱。(代码在最后)

如下图所示,其中红色的为我们实部的LFM波形,蓝色的为我们的虚部波形,粉色的是我们的幅度谱。

匹配滤波

我们可以通过matlab对该信号进行求解,其中,卷积之后,离散的信号值会变多,因此我们也需要将我们对应的时间,和频率的点数相对应的增多。(代码在最后)

如下图所示,其中红色的为我们卷积后的信号实部的波形,蓝色的为我们的虚部波形,粉色的是我们的幅度谱。

 噪音分析

匹配滤波常用于雷达中,提高信噪比,我们可以利用matlab中自带的awgn函数去增加我们的一个噪声,其中第一个参数是我们的信号第二个参数是我们的信噪比SNR以dB为单位。(代码在最后)

下图是我们加入噪声之后的一个图像:

 下图是我们加入噪声之后经过匹配滤波的图像:

 下图是我们匹配滤波后的一个对比图片:

 下图是我们加入噪声之后的信噪比的结果图片和表格:

 

原理分析

 代码

function myfun
    T = 1e-5;%10us
    B = 4e7;%40MHz
    Fs=2*B;Ts=1/Fs;
    N=T/Ts;     %采样点数
    t=linspace(-T/2,T/2,N); 
    f=linspace(-Fs/2,Fs/2,N);
    
    
    [time_domain,noise,frequency_domain] = LFM(t);
    
    sigPower = sum(abs(time_domain).^2)/length(time_domain);             %求出信号功率
    noisePower=sum(abs(noise-time_domain).^2)/length(noise-time_domain);         %求出噪声功率
    SNR_10=10*log10(sigPower/noisePower);            %由信噪比定义求出信噪比,单位为db
    disp(SNR_10);
    
    [time_domain_h,frequency_domain_h] = h(t);
    time_domain_so = conv(time_domain,time_domain_h);
    frequency_domain_so = fftshift(fft(time_domain_so));
  
    noise_so = conv(noise,time_domain_h);
    sigPower = sum(abs(time_domain_so).^2)/length(time_domain_so);             %求出信号功率
    noisePower=sum(abs(noise_so-time_domain_so).^2)/length(noise_so-time_domain_so);         %求出噪声功率
    SNR_10=10*log10(sigPower/noisePower);            %由信噪比定义求出信噪比,单位为db
    disp(SNR_10);

    
    figure(1);
    subplot(311)
    plot(t*1e6,real(time_domain),'r');          %1e6表示10的6次幂;r的实部
    xlabel('时间 (us)');
    ylabel('Real s(t)');
    title('Real part of signal');
    subplot(312)
    plot(t*1e6,imag(time_domain),'b');          %1e6表示10的6次幂;r的实部
    xlabel('时间 (us)');
    ylabel('Imaginary s(t)');
    title('Imaginary part of signal');
    subplot(313)
    plot(f*1e-6,abs(frequency_domain),'m');          %1e6表示10的6次幂;r的实部
    xlabel('频率 (MHz)');
    ylabel('幅度');
    title('幅度谱');
    
    t=linspace(-T,T,2*N-1); 
    f=linspace(-Fs/2,Fs/2,2*N-1);
    
    figure(2);
    subplot(311)
    plot(t*1e6,real(time_domain_so),'r');          %1e6表示10的6次幂;r的实部
    xlabel('时间 (us)');
    ylabel('Real s(t)');
    title('Real part of signal');
    subplot(312)
    plot(t*1e6,imag(time_domain_so),'b');          %1e6表示10的6次幂;r的实部
    xlabel('时间 (us)');
    ylabel('Imaginary s(t)');
    title('Imaginary part of signal');
    subplot(313)
    plot(f*1e-6,abs(frequency_domain_so),'m');          %1e6表示10的6次幂;r的实部
    xlabel('频率 (MHz)');
    ylabel('幅度');
    title('幅度谱');
end

function [time_domain,noise,frequency_domain] = LFM(t)
    T = 1e-5;%10us
    fc = 0;%0Hz
    B = 4e7;%40MHz
    K = B/T;
    
    time_domain = (t<=T/2 & t>=-T/2).*exp(1i*(pi*K.*t.^2+2*pi*fc.*t));
    noise = awgn(time_domain,10);
    
    frequency_domain = fftshift(fft(time_domain));
end

function [time_domain,frequency_domain] = h(t)
    K = 1;
    [time_domain,~,~] = LFM(t);
    time_domain = K.*conj(flip(time_domain));
    frequency_domain = fftshift(fft(time_domain));
end


  • 4
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
BPSK(Binary Phase Shift Keying)信号是一种基于相位的数字调制技术,常用于数字通信系统中。匹配滤波是一种用于接收端的信号处理技术,用于提取出发送信号中的信息。 对于BPSK信号的匹配滤波,首先需要了解BPSK调制技术。BPSK信号是通过将二进制数码信息与同频正弦波相位进行调制而生成的。当信息为“0”时,相位不发生变化,当信息为“1”时,相位发生180°的变化。 匹配滤波器的作用是尽可能准确地从接收到的信号中恢复出最初发射的信号。对于BPSK信号,匹配滤波器通常使用一个与发送信号相匹配的滤波器。 BPSK信号的匹配滤波器可以是一个思想上的理想滤波器,也可以使用具体的实际滤波器,如Cauer滤波器或Butterworth滤波器等。这些滤波器具有在传输带宽范围内提供理想频率响应的特点。 匹配滤波器的设计目标是尽可能接近接收信号的理想版本。通过与理想发送信号进行相关运算,匹配滤波器可以将噪声和其他无关信号从接收信号中滤除,从而提高信号的信噪比。 当接收到的信号经过匹配滤波器后,可以使用信号处理算法进一步处理以实现数据解调、误码检测等功能。 总之,对于BPSK信号的匹配滤波是一种用于接收端的信号处理技术,通过设计滤波器来最大程度地提取出发送信号中的信息,从而实现高质量的信号恢复。这有助于数字通信系统中的可靠数据传输。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值