LFM雷达实现及USRP验证【章节2:LFM雷达测距】

news/2024/7/10 1:36:12 标签: 目标检测, matlab

目录

1. 参数设计

几个重要的约束关系

仿真参数设计 

matlab%E9%9B%B7%E8%BE%BE%E6%B5%8B%E8%B7%9D%E4%BB%A3%E7%A0%81-toc" style="margin-left:0px;">2. matlab雷达测距代码

完整源码

代码分析


回顾:LFM的基本原理请详见第一章

本章节将介绍LFM雷达测距的原理及实现

1. 参数设计

  • 几个重要的约束关系

带通采样定理

因此如果我们B=80MHz时,奈奎斯特采样率近似等于2.11倍带宽,因此我们采样率fs设置为2.5倍带宽绰绰有余。 

距离分辨率

\sigma _{R}=c/(2B)

最大目标探测距离

由下式定义,,其中Tr表示脉冲重复周期

Rmax=\frac{1}{2}cTr

当我们Tr设置为0.05s时,按照公式可得最大检测距离Rmax=7500000m,脉冲波形的往返时间也为0.05s,因此我们采样时间也就为0.05s。

采样时间

采样时间可以由上述的最大目标检测距离确定,假设最大目标检测距离为Rmax,则最大采样时间t为,换句话说,采样时间与你的最大检测距离或者检测范围有关

t_{max}=2Rmax/c

若Rmax=1000m,则采样时间约为6.67ns,易知,探测距离越远则采样时间越长

  • 仿真参数设计 

参数设置参数意义
fc载波频率 4GHz
Fs采样率为200MHz(USRP最大采样率受限)
Ts采样周期Ts=1/FS=5ns
BB=0.4Fs=80MHz
Tp时宽10us,Tp=10e-6
c光速,设置为3e8
Tr脉冲重复周期等于1/PRF=50ms
PRF脉冲重复频率为20
lamda波长等于光速/载波频率=75mm(毫米波波段)
Rmax最大探测距离300m
R_resolution距离分辨率=光速/两倍波长=c/(2B)=1.875m

matlab%E9%9B%B7%E8%BE%BE%E6%B5%8B%E8%B7%9D%E4%BB%A3%E7%A0%81">2. matlab雷达测距代码

原始雷达回波经过脉冲压缩之后的回波
  • 完整源码

%==========================================================================
%%   单脉冲LFM雷达测距
%==========================================================================
clear all;clc;close all;

%% LFM参数设置
fc = 4e9;               %载波频率
PRF = 20;               %脉冲重复频率
Tr = 1/PRF;             %脉冲重复周期
B = 80e6;               %带宽
Fs = 2.5*B;             %采样频率
Ts = 1/Fs;              %采样时间
Tp = 10e-6;             %脉宽
c = 3e8;                

lamda = c/fc;           %载波波长                 
R_max = 3000;            %最大检测距离(不能设置太小,不然后面存在问题,回波窗尽量大一些)                
R_min = 0;              %最小检测距离
RCS = [1,1,1];          %目标物体的反射截面积
R_targets = [105,11,60];          %目标距离

%% LFM参数导出                                
K = B/Tp;               %调频斜率      
Rwind = R_max - R_min;  %距离窗                       
twind = 2*Rwind/c;      %利用距离窗计算信号的往返时间窗                     
num_wind_sample = ceil(twind/Ts);%在规定时间窗内总的采样点数计算

%% LFM回波信号生成
t = linspace(2*R_min/c,2*R_max/c,num_wind_sample);%将检测范围所需时间分成与采样点数相同数量的点
num_targets = length(R_targets);%计算目标物体个数
% LTI系统的接收信号
td=ones(num_targets,1)*t-2*R_targets'/c*ones(1,num_wind_sample);
%-----参考章节1中的LTI系统输入输出关系-------
Srt=RCS*(exp(1i*pi*K*td.^2).*(abs(td)<Tp/2));%从点目标来的回波(所有目标物体的叠加)

%% 脉冲压缩
num_chrip_samples = ceil(Tp/Ts);    %将脉宽按照采样间隔离散化得到chrip的时域采样点数
%%循环卷积长度应当大于等于N+N-1,其中弃置区位于长度大于N+N-1的部分(参考章节1中的频域匹配滤波部分)
num_fft = 2^nextpow2(2*num_wind_sample-1);          %方便使用FFT算法,满足2的次方形式
t0 = linspace(-Tp/2,Tp/2,num_chrip_samples);
%对接收信号Srt进行傅里叶变换得到Srw
Srw = fft(Srt,num_fft);
%原始发射信号St及其fft
St = exp(1i*pi*K*t0.^2);%发射的LFM信号(用t0限制了脉宽)
Stw = fft(St,num_fft);%发射信号的频域
%匹配滤波
Sot = fftshift(ifft(Srw.*conj(Stw)));           %脉冲压缩后的信号

%% 数据处理
N0 = ceil(num_fft/2-num_chrip_samples/2);
Z = abs(Sot(N0:N0+num_wind_sample-1));
%归一化并取dB表示
Z = Z/max(Z);
Z_dB = 20*log10(Z);

%% 绘图
figure(1)
plot(t*10e6,real(Srt));
axis tight,xlabel('时间 / us');ylabel('幅度'),title('原始雷达回波');
figure(2)
plot(t*c/2,Z_dB);
axis([R_min,R_max,-60,0]);
xlabel('距离 / m'),ylabel('幅度 / dB'),title('脉冲压缩测距')
  • 代码分析


http://www.niftyadmin.cn/n/176672.html

相关文章

可做题2(矩阵快速幂,乘法逆元,exgcd)

题目链接&#xff1a;可做题2 (nowcoder.com) 题目描述 若一个数列a满足条件anan-1an-2,n ≥ 3,而a1,a2为任意实数&#xff0c;则我们称这个数列为广义斐波那契数列。 现在请你求出满足条件a1i&#xff0c;a2为区间[l,r]中的整数&#xff0c;且ak mod pm的广义斐波那契数列有…

为了之后找工作不被虐,每天刷3道《剑指offer》Day-1

本文已收录于专栏&#x1f33b;《刷题笔记》文章目录前言&#x1f496; 1、二维数组中的查找题目描述思路&#x1f496; 2、替换空格题目描述思路&#x1f496; 3、从尾到头打印链表题目描述思路一&#xff08;反转函数&#xff09;思路二&#xff08;递归&#xff09;思路二&a…

快排,必拿下[java代码]

前导课划分成<P区和>P区以最后一个元素作为划分值---假设为P&#xff0c;将整个数组划分成[ 小于等于P的区域 大于P的区域]每个区域里无序。操作流程&#xff1a;从左往右遍历&#xff0c;有两个分支逻辑①若当前数<P,则当前数和小于等于区的下一数交换&#xff0c;小…

链表 链表之报数问题(循环链表)_46+链表之节点删除_47+链表删除练习_48

链表之报数问题 题目描述 有n个人围成一圈&#xff0c;顺序从1开始排号。从第1个人开始报数&#xff08;从1到3报数&#xff09;&#xff0c;凡报到3的人退出圈子&#xff0c;问最后留下的是原来第几号的那位。要求用循环链表实现。 输入格式 只有一个正整数n&#xff0c;保证…

FineReport模板设计器(帆软报表)之下载安装概述

目录一、下载及安装二、初识帆软1、简介2、索引2.1 前端 JavaScript 开发2.2 后台引擎相关开发2.3 插件开发2.4 使用 WebAPI 开发一、下载及安装 点击免费使用 选择使用的意图&#xff0c;进入到主界面点击下载即可&#xff0c;记得复制激活码&#xff01;&#xff01;&#x…

MyBatis小插曲\ lombok的坑:VO类继承父类打印不全的问题

模拟问题场景在我们 向前端传递参数的时候&#xff0c;经常会出现用到VO类的情况而VO这个扩展类&#xff0c;通常大部分的属性都和基类&#xff08;对应数据库的真正实体类&#xff09;有很多重复这时候我们就可以直接通过继承来进行实现。假如我们现在 有Article 和 User两个表…

idea远程debug服务器项目

1.配置idea远程debug 2.配置关键配置信息 ①调试名称&#xff08;随便起名&#xff09; ②远程机器IP ③调试开启的进程端口&#xff08;随便只要不被占用即可使用&#xff09; ④配置好①&#xff0c;②&#xff0c;③三个参数后生成的启动参数 ⑤选择模块就是服务器上打包的…

计算机专业来说是学习Python还是Java呢?

对于计算机专业的人来说&#xff0c;不应该着眼于选择哪门语言?你需要关注的是 如何进行编程。这是来自C之父Bjarne对这个问题的回答。曾经在一次讲座上&#xff0c;一位老师为问了Bjarne&#xff1a;我们应该教学生什么语言&#xff1f;Bjarne居然很耐心的回答了。Bjarne回答…