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

article/2025/7/6 1:45:50

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.hkcw.cn/article/STWfoThQod.shtml

相关文章

Spine工具入门教程2之导入

1、导入定义 从原画转化为Spine的环节。 (1)选择路径,拖动图片导入方式 缺点:定位不准 【使用批量导出的方式】 在PS工具中,选择所有图层后右键选择导出。 在Spine工具中,选择路径导入图片。 然后再拖…

吴恩达MCP课程(1):chat_bot

原课程代码是用Anthropic写的,下面代码是用OpenAI改写的,模型则用阿里巴巴的模型做测试 .env 文件为: OPENAI_API_KEYsk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx OPENAI_API_BASEhttps://dashscope.aliyuncs.com/compatible-mode…

Z-AnyLabeling1.0.1

1.前段时间写了第一个版本的Z-AnyLabeling,使用起来只能标注一个文件夹里面的图片,不能标注多个文件夹数据 2.现在更新一个版本可以标注多个文件夹数据,同时可以保存成一个工程文件。 3.软件开发环境:Pycharm,Pyside6 4.软件界面 …

告别充电焦虑:移动充电桩如何优化传统充电模式?

新能源汽车的普及,充电难、充电慢的问题日益凸显。传统固定充电桩受限于场地和电网,难以满足用户灵活、高效的充电需求。而移动充电桩的出现,正逐步改变这一局面。它以其灵活部署、智能调度和高效补能的优势,为缓解充电焦虑提供了…

github访问慢

解决github外玩访问慢 ,点击解决方案

榕壹云医疗服务系统:基于ThinkPHP+MySQL+UniApp的多门店医疗预约小程序解决方案

在数字化浪潮下,传统医疗服务行业正面临效率提升与客户体验优化的双重挑战。针对口腔、美容、诊所、中医馆、专科医院及康复护理等需要预约或诊断服务的行业,我们开发了一款基于ThinkPHP+MySQL+UniApp的多门店服务预约小程序——榕壹云医疗服务系统。该系统通过模块化设计与开…

RPA如何支持跨平台和跨浏览器的自动化

RPA,即机器人流程自动化(Robotic Process Automation),正日益成为企业实现业务流程高效自动化的关键技术。在复杂的数字化环境中,跨平台和跨浏览器的自动化需求极为迫切,RPA 通过多种技术手段和策略来满足这…

SpringBoot简单体验(TODO)

1 Helloworld 打开:https://start.spring.io/ 选择maven配置。增加SpringWeb的依赖。 Generate之后解压,代码大致如下: hpDESKTOP-430500P:~/springboot2/demo$ tree ├── HELP.md ├── mvnw ├── mvnw.cmd ├── pom.xml └── s…

事件驱动架构入门

主要参考资料: 软件架构-事件驱动架构: https://blog.csdn.net/liuxinghao/article/details/113923639 目录 简介事件队列事件日志事件收集器响应队列读事件 vs. 写事件 简介 事件驱动架构是一种系统或组件之间通过发送事件和响应事件彼此交互的架构风格。当某个事…

2024全国青少年信息素养大赛python复赛真题——计算握手次数

2024全国青少年信息素养大赛python复赛真题——计算握手次数 题目可点下面去处,支持在线编程,在线测评~ 计算握手次数(2024全国青少年信息素养大赛复赛真题)_python_少儿编程题库学习中心-嗨信奥 题库收集了历届各白名…

[春秋云镜] CVE-2023-23752 writeup

首先奉上大佬的wp表示尊敬:(很详细)[ 漏洞复现篇 ] Joomla未授权访问Rest API漏洞(CVE-2023-23752)_joomla未授权访问漏洞(cve-2023-23752)-CSDN博客 知识点 Joomla版本为4.0.0 到 4.2.7 存在未授权访问漏洞 Joomla是一套全球知名的内容管理…

Trae Builder编程助手-基于Builder完成算法生成+api接口实现全流程

Trae插件下载链接 ​ 总结 使用过Builder后,我的感觉就是,可以通过嘴写代码!!雄起吧,我们程序员的口语交际能力。同时重点要先把自己的编码环境设置好,否则很麻烦 参考 安装过程单击Trae插件下载链接&…

python笔面试题汇总

1. 如何利用SciKit包训练一个简单的线性回归模型 利用linear_model.LinearRegression()函数 # Create linear regression object regr linear_model.LinearRegression() # Train the model using the training sets regr.fit(data_X_train, data_y_train) 2. 例举几个常用的…

pandas数据分析

数据读取 import pandas as pd df pd.read_csv(D:\my_app\python\python project\data\sample_data.csv) print(df)数据保存 import pandas as pd# 创建示例数据 data {Name: [Alice, Bob, Charlie, David, Eve],Age: [25, 30, 35, 28, 22],City: [Beijing, Shanghai, Guan…

力扣每日一题——找到离给定两个节点最近的节点

目录 题目链接:2359. 找到离给定两个节点最近的节点 - 力扣(LeetCode) 题目描述 解法一:双指针路径交汇法​ 基本思路 关键步骤 为什么这样可行呢我请问了? 举个例子 特殊情况 Java写法: C写法&a…

一种通用图片红色印章去除的工具设计

朋友今天下午需要处理个事情,问我有没有什么好的办法能够去除,核心问题是要去除图片上的印章。记得以前处理过类似的需求,photoshop操作比较简单,本质是做运算。这种处理方式有很多,比如现在流行的大模型,一…

Bean对象循环依赖

Spring 循环依赖是指 多个 Bean 对象之间形成相互依赖的闭环。 三级缓存解决循环依赖 缓存级别存储内容作用一级缓存完整的 Bean(singletonObjects)存放已初始化完成的 Bean二级缓存半成品 Bean(earlySingletonObjects)存放已实例…

文心快码参编国内首个软件开发智能体技术规范

近期,中国信息通信研究院(简称“中国信通院”)与中国工商银行、北京兴云数科技术有限公司、北京百度网讯科技有限公司牵头,联合农业银行、邮储银行、科大讯飞、腾讯、阿里、华为等二十余家头部企业,共同编制并正式发布…

【笔记】Windows 系统安装 Supabase CLI 完整指南(基于 Scoop)

#工作记录 前言 在进行开源项目 Suna 部署过程中,执行设置向导时遭遇报错:❌ Supabase CLI is not installed. 根据官方文档指引,需通过 Windows 包管理工具Scoop安装 Supabase CLI。 安装步骤记录 步骤 1:确保 Scoop 已正确安…

深圳南山沙河社区联合心美行动举办“青少年天赋提升”助青春成长

2025年5月29日——在六一国际儿童节到来之际,深圳市南山区沙河街社区联合北京红十字基金会了凡积善之家心美行动志愿团,共同举办“青少年能力天赋提升”主题公益讲座。活动特邀心美行动发起人、中韩医学文化特使、国际高级心理咨询师陈艳林女士担任主讲嘉…