✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。
个人主页:Matlab科研工作室
个人信条:格物致知。
⛄ 内容介绍
脉冲多普勒(PD)雷达,它利用了多普勒效应原理,既具备脉冲雷达的测距性能,又具备多普勒雷达的测速性能,同时对杂波的抑制能力也比较突出,是一种重要的全相参体制的雷达.
⛄ 完整代码
%% 多普勒雷达信号处理过程
%%
clc;
close all;
clear;
%% 参数设置
fs = 80e6; %载波频率(Hz)
f0 = 100e6; %中频(Hz)
B = 5e6; %脉冲带宽(Hz)
ts =5e-6; %脉冲时宽(s)
prt = 100e-6; %脉冲重复时间间隔(s) prf = 10kHz
num = 32;
N = round(fs*ts); %1个脉冲的采样点数
n = -N/2:1:N/2-1;
NN = round(fs*prt); %1个脉冲重复间隔内的采样点数
NN_total = NN*num; %32个脉冲重复间隔内的采样点数
n_total = -0.5*NN_total:1:0.5*NN_total-1;
t_total = ts/N*n_total;
t = ts/N*n; %1个脉冲对应的时间范围
fd = 2.5e3; %动目标多普勒频率(Hz)
k = B/ts; %线性调频波斜率
%% 线性调频回波
s_back0 = exp(1i*(2*pi*1/2*k*t.^2)); %基带
s_back2 = [zeros(1,0.5*(NN-N)),s_back0,zeros(1,0.5*(NN-N))]; %补零
s_back3 = real(repmat(s_back2,1,num).*exp(1i*(2*pi*(fd+f0)*t_total))); %32个脉冲
s_back = s_back3;
% s_back = awgn(s_back3,-15,'measured'); %加入高斯白噪声,SNR=-15dB
% s_back = round(s_back/max(abs(s_back))*(2^15-1)); %量化 ---?
%量化导出s_back
s_back_16 = round((s_back/max(abs(s_back)))*(2^15-1));
for i = 1:256000
if s_back_16(i) < 0
s_back_16(i) = s_back_16(i) + 2^16;
end
end
s_back_eprt = fopen('s_back.txt','w');
fprintf(s_back_eprt,'%x\r\n',s_back_16);
fclose(s_back_eprt);
figure(1);
subplot(211);
plot(real(s_back3));
title('线性调频波回波时域图像(不含噪声)');
grid on;
subplot(212);
plot(real(fft(s_back3)));
title('线性调频波回波频域(不含噪声)');
grid on;
figure(2)
subplot(211);
plot(s_back);
title('线性调频波回波时域图像(含噪声)');
subplot(212);
plot(abs(fft(s_back)));
title('线性调频波回波频域图像(含噪声)');
%% 下变频
s_dds = exp(-1i*2*pi*f0*t_total); %DDS产生的信号 100MHz
% s_dds = round(s_dds/max(abs(s_dds))*(2^15-1));
h_lpf = fir1(66,B*2/fs); %低通滤波器
% h_lpf = round(h_lpf/max(abs(h_lpf))*(2^15-1));
figure
freqz(h_lpf);
title('低通滤波器幅频特性')
s_dds_o = s_dds.*s_back;
% s_dds_o = round(s_dds_o/2^16);
s_ddc_lpf = conv(h_lpf,s_dds_o);
% s_ddc_lpf = round(s_ddc_lpf/2^16);
figure('name','s_ddc_lpf')
subplot(211)
plot(real(s_ddc_lpf));
hold on
plot(imag(s_ddc_lpf),'r')
title('DDC下变频')
subplot(212)
plot(20*log10(abs(fft(s_ddc_lpf))));
%% 脉冲压缩
h_match = fliplr(conj(s_back0));
w = hamming(length(h_match))';
h_match = h_match.*w;
% h_match = exp(1i*(-2*pi*1/2*k*t.^2));
% h_match = [h_match,zeros(1,(NN-N))];
% h_match = repmat(h_match,1,num);
% h_match = round(h_match/max(abs(h_match))*(2^15-1)); %匹配滤波器
figure('name','h_match')
plot(real(h_match));
hold on;
plot(imag(h_match),'r');
title('匹配滤波器')
s_match_o = conv(h_match,s_ddc_lpf);
% s_match_o =fft(s_ddc_lpf(1:2048000)).*fft(fliplr(h_match),2048000);
% s_match_o = ifft(s_match_o);
% s_match_o = round(s_match_o/2^15);
figure('name','s_match_o')
subplot(121)
plot(real(s_match_o));
hold on
plot(imag(s_match_o),'r');
title('匹配滤波后的时域波形');
subplot(122)
plot(abs(fft(s_match_o)));
title('匹配滤波后的波形');
% figure(6)
% plot(real(s_match_o));
% hold on
% plot(real(s_fd),'r');
%% 动目标检测MTI 三脉冲对消
s_mti_in = conj((reshape(s_match_o(1:256000),256000/num,num))'); %输入脉冲整形
for i = 1:num-2
s_mti_o(i,:) = s_mti_in(i,:)-2*s_mti_in(i+1,:)+s_mti_in(i+2,:); %三脉冲对消
end
figure('name','s_mti_o')
plot(imag(conj(s_mti_o')));
%% MTD
% s_mtd_o = fft (s_mti_o,32);
% figure
% plot(abs(s_mtd_o(:,:))');
for i = 1 : 8000
s_mtd_o(:, i) = fft(s_mti_in(:, i), 32); % 对同一距离点不同脉冲重复间隔的数据做K点FFT加窗运算
end
figure('name','s_mtd_o')
plot(abs(s_mtd_o(:,4230)));
title(4234)
figure
for i = 1:8
subplot(2,4,i)
plot(abs(s_mtd_o(i,:)));
title(i)
end
figure
for i = 1:8
subplot(2,4,i)
plot(abs(s_mtd_o(i+8,:)));
title(i+8)
end
figure
for i = 1:8
subplot(2,4,i)
plot(abs(s_mtd_o(i+16,:)));
title(i+16)
end
figure
for i = 1:8
subplot(2,4,i)
plot(abs(s_mtd_o(i+24,:)));
title(i+24)
end
%%
⛄ 运行结果
⛄ 参考文献
[1] 李斌, 王磊, 张少华. 脉冲多普勒雷达Matlab建模与仿真[J]. 光电技术应用, 2020, 35(4):9.
[2] 严明. 脉冲多普勒雷达信号处理MATLAB仿真研究[D]. 安徽理工大学, 2016.
[3] 戴小军. 对脉冲多普勒雷达干扰技术研究与实现[D]. 江苏科技大学, 2014.