当前位置: 首页 > news >正文

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

目录

1. 参数设计

几个重要的约束关系

仿真参数设计 

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

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('脉冲压缩测距')
  • 代码分析

相关文章:

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

目录 1. 参数设计 几个重要的约束关系 仿真参数设计 2. matlab雷达测距代码 完整源码 代码分析 回顾&#xff1a;LFM的基本原理请详见第一章 本章节将介绍LFM雷达测距的原理及实现 1. 参数设计 几个重要的约束关系 带通采样定理&#xff1a; 因此如果我们B80MHz时&a…...

菜鸟刷题Day5

⭐作者&#xff1a;别动我的饭 ⭐专栏&#xff1a;菜鸟刷题 ⭐标语&#xff1a;悟已往之不谏&#xff0c;知来者之可追 一.一维数组的动态和&#xff1a;1480. 一维数组的动态和 - 力扣&#xff08;LeetCode&#xff09; 描述 给你一个数组 nums 。数组「动态和」的计算公式…...

已解决AttributeError:module tensorflow no attribute app异常的正确解决方法,亲测有效!!!

已解决AttributeError&#xff1a;module tensorflow no attribute app异常的正确解决方法&#xff0c;亲测有效&#xff01;&#xff01;&#xff01; 文章目录报错问题解决方法福利报错问题 粉丝群里面的一个小伙伴敲代码时发生了报错&#xff08;当时他心里瞬间凉了一大截&…...

Hadoop集群环境配置搭建

一、简单介绍 Hadoop最早诞生于Cutting于1998年左右开发的一个全文文本搜索引擎 Lucene&#xff0c;这个搜索引擎在2001年成为Apache基金会的一个子项目&#xff0c;也是 ElasticSearch等重要搜索引擎的底层基础。 项目官方&#xff1a;https://hadoop.apache.org/ 二、Linux环…...

Thread类的基本用法

Thread类的基本用法&#x1f50e;1.线程创建&#x1f33b;继承Thread类&#x1f33c;继承Thread重写run()方法&#x1f33c;继承Thread匿名内部类&#x1f33b;实现Runnable接口&#x1f33c;实现Runnable接口重写run()方法&#x1f33c;实现Runnable接口匿名内部类&#x1f33…...

YOLOV8改进:如何增加注意力模块?(以CBAM模块为例)

YOLOV8改进&#xff1a;如何增加注意力模块&#xff1f;&#xff08;以CBAM模块为例&#xff09;前言YOLOV8nn文件夹modules.pytask.pymodels文件夹总结前言 因为毕设用到了YOLO&#xff0c;鉴于最近V8刚出&#xff0c;因此考虑将注意力机制加入到v8中。 YOLOV8 代码地址&am…...

Spark Streaming DStream的操作

一、DStream的定义 DStream是离散流&#xff0c;Spark Streaming提供的一种高级抽象&#xff0c;代表了一个持续不断的数据流。DStream可以通过输入数据源来创建&#xff0c;比如Kafka、Flume&#xff0c;也可以通过对其他DStream应用高阶函数来创建&#xff0c;比如map、redu…...

蓝桥杯冲刺 - week1

文章目录&#x1f4ac;前言&#x1f332;day192. 递归实现指数型枚举843. n-皇后问题&#x1f332;day2日志统计1209. 带分数&#x1f332;day3844. 走迷宫1101. 献给阿尔吉侬的花束&#x1f332;day41113. 红与黑&#x1f332;day51236. 递增三元组&#x1f332;day63491. 完全…...

Leetcode27. 移除元素

目录一、题目描述&#xff1a;二、解决思路和代码1. 解决思路2. 代码一、题目描述&#xff1a; 给你一个数组 nums 和一个值 val&#xff0c;你需要 原地 移除所有数值等于 val 的元素&#xff0c;并返回移除后数组的新长度。 不要使用额外的数组空间&#xff0c;你必须仅使用…...

ViewService——一种保证客户端与服务端同步的方法

简介在分布式系统中&#xff0c;最常见的场景就是主备架构。但是如果主机不幸宕机&#xff0c;如何正确的通知客户端当前后端服务器的状况成为一个值得研究的问题。本文描述了一种简单的模型用于解决此问题。背景以一个分布式的Key-Value数据库为背景。数据库对外提供3个接口Ge…...

使用STM32F103ZE开发贪吃蛇游戏

目录 前言 一、设置FreeROTS用户任务 &#xff08;1&#xff09;事件event任务 &#xff08;2&#xff09;按键输入方向控制任务 &#xff08;3&#xff09;果实食物任务 &#xff08;4&#xff09;显示任务函数 &#xff08;3&#xff09;开始任务 二、主函数 三、ADC采样…...

如何利用Web3D技术打造在线虚拟展览馆

随着Web3D技术的不断发展&#xff0c;越来越多的企业和组织开始将其应用于虚拟展览馆的建设中。虚拟展览馆可以为观众提供高度沉浸式的展览体验&#xff0c;让观众可以随时随地参观各种展览&#xff0c;同时也为展览组织者提供了更多的展示方式和机会。下面将介绍如何利用Web3D…...

第二十三章 opengl之高级OpenGL(实例化)

OpenGL实例化实例化数组绘制小行星带实例化 综合应用。 如果绘制了很多的模型&#xff0c;但是大部分的模型包含同一组顶点数据&#xff0c;只是不同的世界空间变换。 举例&#xff1a;一个全是草的场景&#xff0c;每根草都是一个包含了几个小三角形的模型。需要绘制很多根草…...

C++ String类总结

头文件 #include <string>构造函数 default (1) basic_string();explicit basic_string (const allocator_type& alloc); copy (2) basic_string (const basic_string& str);basic_string (const basic_string& str, const allocator_type& alloc); su…...

内网升级“高效安全”利器!统信软件发布私有化更新管理平台

随着数字化的深度推进&#xff0c;信息安全重要性进一步凸显。建设自主可控的国产操作系统&#xff0c;提升信息安全自主能力&#xff0c;已成为国家重要战略之一。 操作系统安全对计算机系统的整体安全发挥着关键作用&#xff0c;各类客户往往需要在第一时间获取更新与安全补…...

JAVA开发(自研项目的开发与推广)

https://live.csdn.net/v/284629 案例背景&#xff1a; 作为JAVA开发人员&#xff0c;我们可以开发无数多的web项目&#xff0c;电商系统&#xff0c;小程序&#xff0c;H5商城。有时候作为技术研发负责人&#xff0c;项目做成了有时候也需要对内进行内测&#xff0c;对外进行…...

Mysql用户权限分配详解

文章目录MySQL 权限介绍一、Mysql权限级别分析&#xff08;1&#xff09;全局级别&#xff08;1.1&#xff09; USER表的组成结构&#xff08;1.1.1&#xff09; 用户列&#xff08;1.1.2&#xff09; 权限列&#xff08;1.1.3&#xff09; 安全列&#xff08;1.1.4&#xff09…...

【TypeScript 入门】13.枚举类型

枚举类型 枚举类型:定义包含被命名的常量的集合。比如 TypeScript 支持枚举数字、字符两种常量值类型。 使用方式: enum + 枚举名字 + 花括弧包裹被命名了的常量成员: enum Size {S,M,L } const a = Size.M console.log(Size, Size)...

Python科学计算:偏微分方程1

首先&#xff0c;我们来看初边值问题&#xff1a;伯格斯方程&#xff1a;假设函数是定义在上的函数&#xff0c;且满足&#xff1a;右侧第一项表示自对流&#xff0c;第二项则表示扩散&#xff0c;在许多物理过程中&#xff0c;这两种效应占据着主导地位&#xff0c;为了固定一…...

PLS-DA分类的实现(基于sklearn)

目录 简单介绍 代码实现 数据集划分 选择因子个数 模型训练并分类 调用函数 简单介绍 &#xff08;此处取自各处资料&#xff09; PLS-DA既可以用来分类&#xff0c;也可以用来降维&#xff0c;与PCA不同的是&#xff0c;PCA是无监督的&#xff0c;PLS-DA是有监督的…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具&#xff0c;相比原生 Python 生态&#xff08;如 pip 虚拟环境&#xff09;有许多独特优势&#xff0c;尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处&#xff1a; 一、一站式环境管理&#xff1a…...

mongodb源码分析session执行handleRequest命令find过程

mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程&#xff0c;并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令&#xff0c;把数据流转换成Message&#xff0c;状态转变流程是&#xff1a;State::Created 》 St…...

解锁数据库简洁之道:FastAPI与SQLModel实战指南

在构建现代Web应用程序时&#xff0c;与数据库的交互无疑是核心环节。虽然传统的数据库操作方式&#xff08;如直接编写SQL语句与psycopg2交互&#xff09;赋予了我们精细的控制权&#xff0c;但在面对日益复杂的业务逻辑和快速迭代的需求时&#xff0c;这种方式的开发效率和可…...

基于当前项目通过npm包形式暴露公共组件

1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹&#xff0c;并新增内容 3.创建package文件夹...

高危文件识别的常用算法:原理、应用与企业场景

高危文件识别的常用算法&#xff1a;原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件&#xff0c;如包含恶意代码、敏感数据或欺诈内容的文档&#xff0c;在企业协同办公环境中&#xff08;如Teams、Google Workspace&#xff09;尤为重要。结合大模型技术&…...

Android15默认授权浮窗权限

我们经常有那种需求&#xff0c;客户需要定制的apk集成在ROM中&#xff0c;并且默认授予其【显示在其他应用的上层】权限&#xff0c;也就是我们常说的浮窗权限&#xff0c;那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建

华为云FlexusDeepSeek征文&#xff5c;DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色&#xff0c;华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型&#xff0c;能助力我们轻松驾驭 DeepSeek-V3/R1&#xff0c;本文中将分享如何…...

项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)

Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败&#xff0c;具体原因是客户端发送了密码认证请求&#xff0c;但Redis服务器未设置密码 1.为Redis设置密码&#xff08;匹配客户端配置&#xff09; 步骤&#xff1a; 1&#xff09;.修…...

在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案

这个问题我看其他博主也写了&#xff0c;要么要会员、要么写的乱七八糟。这里我整理一下&#xff0c;把问题说清楚并且给出代码&#xff0c;拿去用就行&#xff0c;照着葫芦画瓢。 问题 在继承QWebEngineView后&#xff0c;重写mousePressEvent或event函数无法捕获鼠标按下事…...

springboot整合VUE之在线教育管理系统简介

可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生&#xff0c;小白用户&#xff0c;想学习知识的 有点基础&#xff0c;想要通过项…...