基于Matlab的脉冲多普勒雷达仿真

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,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.

❤️部分理论引用网络文献,若有侵权联系博主删除

❤️ 关注我领取海量matlab电子书和数学建模资料

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
脉冲多普勒雷达是一种广泛应用于军事和民用领域的雷达系统,它可以通过测量目标的速度和距离来实现目标检测和跟踪。Matlab是一种常用的科学计算软件,也可以用于雷达信号处理仿真。下面是脉冲多普勒雷达Matlab仿真的一些基本步骤: 1.生成脉冲信号:使用Matlab中的rectpuls函数生成矩形脉冲信号,或使用chirp函数生成线性调频脉冲信号。 2.生成目标回波信号:使用Matlab中的radarecho函数生成目标回波信号,或者根据目标的反射特性自己编写回波信号生成函数。 3.添加噪声:使用Matlab中的awgn函数向回波信号中添加高斯白噪声。 4.信号处理:使用Matlab中的FFT函数对回波信号进行频谱分析,或者使用相关函数对回波信号进行匹配滤波。 5.目标检测:根据信号处理结果,使用Matlab中的阈值检测算法或其他目标检测算法实现目标检测。 下面是一个简单的脉冲多普勒雷达Matlab仿真的例子: ```matlab % 生成矩形脉冲信号 fs = 1e6; % 采样率 T = 1/fs; % 采样时间间隔 fc = 10e6; % 载频频率 Tp = 10e-6; % 脉冲宽度 t = 0:T:Tp-T; % 时间序列 s = rectpuls(t,Tp); % 矩形脉冲信号 % 生成目标回波信号 tau = 5e-6; % 目标距离 fd = 1e3; % 目标速度 td = tau + 2*tau*fd/fc; % 目标回波时间 n = length(s); % 脉冲信号长度 t = 0:T:(n-1)*T; % 时间序列 s_echo = [zeros(1,round(td/T)),s,zeros(1,n-round(td/T))]; % 目标回波信号 % 添加噪声 SNR = 10; % 信噪比 s_echo_noisy = awgn(s_echo,SNR,'measured'); % 添加高斯白噪声 % 信号处理 S = fft(s_echo_noisy); % 频谱分析 f = (0:n-1)*fs/n; % 频率序列 plot(f,abs(S)); % 绘制频谱图 % 目标检测 threshold = 0.5*max(abs(S)); % 阈值 if max(abs(S)) > threshold disp('目标检测成功!'); else disp('未检测到目标!'); end ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

matlab科研助手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值