目录
问题
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