线性调频波形测距测速信号处理——全代码+注释

news2025/6/6 13:28:43

clear all
close all
clc

%% 参数设置
fs=600e6;%采样率
fc=10.45e9;% 波形发射载频
t=10e-6;%脉宽
f0=50e6;%波形中频频率
B=10e6;%带宽
u=B/(2*t);%调频斜率
Tv=100e-6;% 脉冲重复周期
Num=64;% 测速脉冲数
lamd=fs/B;% 抽取带宽
Ns=round(fs*t);
NTv=round(fs*Tv);

tt=0:1/fs:t-1/fs;
ff=0:1/t:fs-1/t;

%% 线性调频波形调制

yf=exp(1i*2*pi*((f0-B).*tt+u*tt.^2));
y_lfm=real(yf);
y_lfm_fft=fft(y_lfm);

figure
plot(tt.*1e6,y_lfm./max(y_lfm),'k')
xlabel('时间(us)')
ylabel('归一化幅度')
title('线性调频波形时域')
set(gca,'FontName','宋体','FontSize',12);

figure
plot((ff-fs/2)./1e6,abs(fftshift(y_lfm_fft))./max(abs(y_lfm_fft)),'k')
xlabel('时间(us)')
ylabel('归一化幅度')
title('线性调频波形频域')
set(gca,'FontName','宋体','FontSize',12);

%% 匹配副本处理
bellm=exp(1i*2*pi*f0.*tt);%匹配副本的下变频本振
y_match=yf.*bellm;%发射波形下变频
window_h=hamming(length(y_match));%汉明窗函数
y_match_w=y_match.*window_h';%匹配副本加窗

%% 探测目标设定
c=3e8; % 光传播速度
R=50;% 目标距离
dt=R*1e3*2/c; % 回波时延
Ndt=round(fs*dt);
v=20; % 目标径向速度
df=2*v/(c/fc);% 速度对应的多普勒频移
tt_v=0:1/fs:(Num*NTv-1)*1/fs;
fd=exp(2*j*pi*df.*tt_v);% 多普勒频率调制函数


%% 接收处理仿真        
for k=1:Num;
    yr(k,:)=[zeros(1,Ndt),y_lfm.*fd((k-1)*NTv+1:(k-1)*NTv+Ns)];% 回波延时
    yr_n(k,:)=awgn(yr(k,:),20,'measured');% 加性噪声
    tt_r=0:1/fs:(length(yr_n(k,:))-1)*1/fs;
    bell_i=cos(2*pi*f0.*tt_r);% 回波下变频本振I路信号
    bell_q=sin(2*pi*f0.*tt_r);% 回波下变频本振Q路信号
    yr_n_i(k,:)=yr_n(k,:).*bell_i;% 正交调制
    yr_n_q(k,:)=yr_n(k,:).*bell_q;% 正交调制
%     yr_n_l_i(k,:)=filter(b_d,a_d,yr_n_i(k,:));% 低通滤波
%     yr_n_l_q(k,:)=filter(b_d,a_d,yr_n_q(k,:));% 低通滤波
    yr_n_l(k,:)=yr_n_i(k,:)+1i*yr_n_q(k,:);
    yr_n_l_fft(k,:)=fft(yr_n_l(k,:));
    y_match_w_fft=fft(y_match_w,length(yr_n_l_fft(k,:)));

    %脉冲压缩
    res_fft(k,:)=yr_n_l_fft(k,:).*conj(y_match_w_fft);
    res(k,:)=ifft(res_fft(k,:));
    res_c(k,:)=res(k,1:lamd:end);%等带宽抽取
end

%% 测距
res_c_1=res_c(1,:);
tt_s=0:1/fs*lamd:(length(res_c_1)-1)*1/fs*lamd;
dd_s=tt_s*c/2;
figure
plot(dd_s./1e3,-20*abs(log10(abs(res_c_1)./max(abs(res_c_1)))),'k');
ylim([-100 0])
xlabel('距离(km)')
ylabel('幅度(dB)')
title('脉冲压缩测距')
set(gca,'FontName','宋体','FontSize',12);

%% 测速
for k=1:length(res_c(1,:));
    res_c_fft(:,k)=fft(res_c(:,k));
end

[~,ind_s_temp]=max(abs(res_c(1,:)));
res_v=abs(res_c_fft(:,ind_s_temp));

vv_s=0:1/(Num*Tv)*(c/fc)/2:(Num-1)*1/(Num*Tv)*(c/fc)/2;

figure
plot(vv_s,res_v./max(res_v),'k');
xlabel('速度(m/s)')
ylabel('归一化幅度')
title('相参测速')
set(gca,'FontName','宋体','FontSize',12);

%% 相参处理后距离-速度三维图
res_c_fft=fft(res_c); %相参积累
figure
surf(dd_s,vv_s,abs(res_c_fft)./max(max(abs(res_c_fft))))
xlabel('距离(m)')
ylabel('速度(m/s)')
zlabel('归一化幅度')
set(gca,'FontName','宋体','FontSize',12);
shading interp

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2399062.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

WPS word 已有多级列表序号

wps的word中,原来已生成的文档里,已存在序号。比如,存在2、2.1、2.1.1、2.1.1.1、2.1.1.1.1 5层序号,而且已分为5级。但增加内容的时候,并不会自动增加序号,应该如何解决? 原来长这样&#xff…

【科研绘图系列】R语言绘制论文组合图形(multiple plots)

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍加载R包数据下载导入数据数据预处理画图1画图2画图3画图4画图5系统信息介绍 这篇文章详细介绍了如何使用R语言进行科研绘图,特别是绘制论文组合图形(multiple plots)。文章从数…

springMVC-9数据格式化

数据格式化 学习目标: 理解在我们提交数据(比如表单时),SpringMVC怎样对提交的数据进行转换和处理的 Spring MVC 上下文中内建了很多转换器,可完成大多数 Java 类型的转换工作。 基本数据类型可以和字符串之间自动完成转换 应用实例-页面…

ISBN书号查询接口如何用PHP实现调用?

一、什么是ISBN书号查询接口 ISBN数据查询接口是一项图书信息查询服务。它基于全球通用的ISBN编码系统,帮助用户快速获取图书的详细信息,包括书名、作者、出版社、出版时间、价格、封面等关键字段。 该接口广泛应用于电商平台、图书馆管理系统、二手书…

Aop + 注解实现数据字典类型转换 EasyExcel导出

Aop 注解 实现数据字典类型转换 文章目录 Aop 注解 实现数据字典类型转换一、基础方式✅字典转换简介👉实现步骤✅ 1. 定义自定义注解Dict ✅ 2. 定义查询字典项的两个方法✅ 3. 定义Aop拦截我们查询的方法✅ 4. VO映射类✅ 5. Controller层✅ 6. serviceImpl✅ 7. …

Xilinx超过256m bit flash固件跳转失败问题

问题描述 按照 链接: Xilinx 7系列fpga在线升级和跳转 这个方式跳转失败 问题排查 进一步排查现象如下 上面这个现象呈现出明显的以16m为周期的规律。感觉很大概率是因为flash超过了16m(256bit)导致的地址越界问题。另外我在CSDN上也找到类似的问题…

SpringCloud 分布式锁Redisson锁的重入性与看门狗机制 高并发 可重入

可重入 Redisson 的锁支持 可重入性,这意味着同一个线程在获取锁后,如果再次尝试获取该锁,它可以成功地获得锁,而不会被阻塞。 每次一个线程成功获取锁后,它的持有次数会增加。当线程再次获取该锁时,Redi…

02 APP 自动化-Appium 运行原理详解

环境搭建见 01 APP 自动化-环境搭建 文章目录 一、Appium及Appium自动化测试原理二、Appium 自动化配置项三、常见 ADB 命令四、第一个 app 自动化脚本 一、Appium及Appium自动化测试原理 Appium 跨平台、开源的 app 自动化测试框架,用来测试 app 应用程序&#x…

由docker引入架构简单展开说说技术栈学习之路

想象一下,你开了一家线上小卖部(单机版),突然爆单了怎么办?别急,技术架构的升级打怪之路,可比哆啦A梦的口袋还神奇! 第1关:单枪匹马的创业初期(单机架构&…

linux 1.0.5

环境变量到底是什么 也就是windows上面的环境变量 就是这个东东,用户变量和系统变量,那这些到底是啥呢? 主包只是用过,配置来配置去的,就是不知道是啥意思 windows上面的环境变量 windows的ls命令是dir 输入calc可有…

强化学习的前世今生(五)— SAC算法

书接前四篇 强化学习的前世今生(一) 强化学习的前世今生(二) 强化学习的前世今生(三)— PPO算法 强化学习的前世今生(四)— DDPG算法 本文为大家介绍SAC算法 7 SAC 7.1 最大熵强化…

生成对抗网络(GAN)基础原理深度解析:从直观理解到形式化表达

摘要 本文详细解析 生成对抗网络(GAN) 的 核心原理,从通俗类比入手,结合印假钞与警察博弈的案例阐述生成器 与 判别器 的对抗机制;通过模型结构示意图,解析 噪声采样、样本生成 及判别流程;基于…

【GitHub开源AI精选】WhisperX:70倍实时语音转录、革命性词级时间戳与多说话人分离技术

系列篇章💥 No.文章1【GitHub开源AI精选】LLM 驱动的影视解说工具:Narrato AI 一站式高效创作实践2【GitHub开源AI精选】德国比勒费尔德大学TryOffDiff——高保真服装重建的虚拟试穿技术新突破3【GitHub开源AI精选】哈工大(深圳)…

华为OD机试真题——文件目录大小(2025 A卷:100分)Java/python/JavaScript/C++/C语言/GO六种语言最佳实现

2025 A卷 100分 题型 本文涵盖详细的问题分析、解题思路、代码实现、代码详解、测试用例以及综合分析; 并提供Java、python、JavaScript、C++、C语言、GO六种语言的最佳实现方式! 2025华为OD真题目录+全流程解析/备考攻略/经验分享 华为OD机试真题《文件目录大小》: 目录 题…

消费者行为变革下开源AI智能名片与链动2+1模式S2B2C商城小程序的协同创新路径

摘要:在信息爆炸与消费理性化趋势下,消费者从被动接受转向主动筛选,企业营销模式面临重构挑战。本文提出开源AI智能名片与链动21模式S2B2C商城小程序的协同创新框架,通过AI驱动的精准触达、链动裂变机制与S2B2C生态赋能&#xff0…

软考 系统架构设计师系列知识点之杂项集萃(78)

接前一篇文章:软考 系统架构设计师系列知识点之杂项集萃(77) 第139题 以下关于软件测试工具的叙述,错误的是()。 A. 静态测试工具可用于对软件需求、结构设计、详细设计和代码进行评审、走查和审查 B. 静…

如何解决MySQL Workbench中的错误Error Code: 1175

错误描述: 在MySQL Workbench8.0中练习SQL语句时,执行一条update语句,总是提示如下错误: Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY columnTo disab…

Docker 镜像(或 Docker 容器)中查找文件命令

在 Docker 镜像(或 Docker 容器)中运行如下两个命令时: cd / find . -name generate.py它们的含义如下,我们来一行一行详细拆解,并结合例子讲解: ✅ 第一行:cd / ✅ 含义 cd 是“change dire…

MySQL进阶篇(存储引擎、索引、视图、SQL性能优化、存储过程、触发器、锁)

MySQL进阶篇 存储引擎篇MySQL体系结构存储引擎简介常用存储引擎简介存储引擎的选择 索引篇索引简介索引结构(1)BTree索引(2)hash索引 索引分类索引语法SQL性能分析指标(1)SQL执行频率(2)慢查询日志(3)profile详情(4)explain或desc执行计划 索引使用引起索引的失效行为SQL提示覆…

BugKu Web渗透之game1

启动场景,打开网页如下: 是一个游戏。 步骤一: 右键查看源代码也没有发现异常。 步骤二: 点击开始游戏来看看。 结果他是这种搭高楼的游戏。我玩了一下子,玩到350分就game over。 之后就显示游戏结束,如…