【限免】线性调频信号的脉冲压缩及二维分离SAR成像算法【附MATLAB代码】

文章来源:微信公众号:EW Frontier

QQ交流群:949444104

程序一

对线性调频信号进行仿真,输出其时频域的相关信息,并模拟回波信号,

对其进行脉冲压缩和加窗处理。

实验记录:

1.线性调频信号时域包络、相位;实部、虚部

2.线性调频信号频谱幅频、相频特性;实部、虚部

3.两个目标回波的时域和频域波形

4.信号通过匹配滤波器的输出结果(脉冲压缩)。

5.用Hamming窗抑制脉冲压缩结果副瓣

%%  基本参数 clc;clear all;close all;
​T = 10e-6; % LFM周期/脉宽 10usB = 60e6; % LFM带宽 60Mhzfs = 100e6; % 采样率 100MHzK = B/T;
%%  模拟发射信号n = round(15*T*fs);t = linspace(-10*T, 10*T,n);
​lfmT = rectpuls(t,T).*exp(1j*pi*K*t.^2);lfmF = fftshift(fft(fftshift(lfmT)));f = linspace(-fs,fs,n);
​%% 时域绘图figure();plot(diff(phase(lfmT)));title('LFM信号的时间-频率变化趋势图');xlabel('时间');ylabel('频率');xlim([7200,7800])% 包络figure();subplot(2,2,1);plot(t,abs(lfmT));title('LFM信号时域包络');xlabel('t/s');ylabel('幅度');xlim([-1e-5,1e-5])ylim([-0.5,1.5])% 相位subplot(2,2,2);plot(t,phase(lfmT));title('LFM信号时域相位');xlabel('t/s');ylabel('相位');xlim([-5e-6,5e-6])% 实部subplot(2,2,3);plot(t,real(lfmT));title('LFM信号时域实部');xlabel('t/s');ylabel('幅度');xlim([-1.5e-6,1.5e-6]);ylim([-1,1]);% 虚部subplot(2,2,4);plot(t,imag(lfmT));title('LFM信号时域虚部');xlabel('t/s');ylabel('幅度');xlim([-1.5e-6,1.5e-6]);ylim([-1,1]);%% 频域绘图figure();subplot(2,2,1);plot(f,abs(lfmF));title('LFM信号幅频特性');xlabel('Hz');ylabel('幅度');
​subplot(2,2,2);plot(unwrap(angle(lfmF)));title('LFM信号相频特性');xlabel('Hz');ylabel('相位');
​subplot(2,2,3);plot(f,real(lfmF));title('LFM信号频谱实部');xlabel('Hz');ylabel('幅度');    xlim([-3e7,3e7]);
​subplot(2,2,4);plot(f,imag(lfmF));title('LFM信号频谱虚部');xlabel('Hz');ylabel('幅度');    xlim([-3e7,3e7]);%%  模拟回波信号
% 延迟为50us和51us的两个信号( 5000点和5100点,t从4000开始存储 )%延迟t1=50e-6;t2=51e-6;
​%由于实际信号时间从0开始,时间轴重新定义echo1=rectpuls((t-t1),T).*exp(1j*pi*K*(t-t1).^2);echo2=rectpuls((t-t2),T).*exp(1j*pi*K*(t-t2).^2);echo=echo1+echo2;
​figure();subplot(2,2,1)plot(t,abs(echo1),'r');hold on;plot(t,abs(echo2),'b');title('两个回波信号');xlabel('t/s');ylabel('幅度');xlim([3.5e-5,7e-5])ylim([0,1.5])
​subplot(2,2,2)plot(t,real(echo));title('回波信号时域实部');xlabel('t/s');ylabel('幅度');xlim([4.9e-5 5.2e-5])
​subplot(2,2,3)plot(f,fftshift(abs(fft(echo))));title('回波信号幅频特性');xlabel('Hz');ylabel('幅度');
​subplot(2,2,4)plot(t,imag(echo));title('回波信号时域虚部');xlabel('t/s');ylabel('幅度');xlim([4.9e-5 5.2e-5])
​lfmT = rectpuls(t,T).*exp(1j*pi*K*t.^2);lfmF = fftshift(fft(fftshift(lfmT)));f = linspace(-fs,fs,n);

脉冲压缩(匹配滤波)

方法1:

把信号变到频域 (2048点的FFT)[-fs/2,fs/2]

频域相乘 H(w) = *S(w)

逆傅里叶变换

方法2:

驻留相位原理获得传递函数

% 这里采用方法1%回波信号的频域形式echo_F=fftshift(fft(echo));%回波信号的匹配滤波器Hf=fftshift(fft(conj(lfmT)));%脉压结果Pc_F=echo_F.*Hf;%脉压时域结果Pc_T=ifftshift(ifft(Pc_F));
​
%用Hamming窗抑制副瓣%制作汉明窗Hm = [zeros(1,2300) hamming(9900)' zeros(1,2800)];%频域加窗Pcw_F = Hm.*Pc_F;Pcw_T=ifftshift(ifft(Pcw_F));
​figure();subplot(2,2,1)plot(t,abs(Pc_T));title('脉冲压缩后的时域波形');xlim([4.5e-5 5.5e-5])
​subplot(2,2,2)plot(f,abs(Pc_F));title('脉冲压缩后的频谱');
​subplot(2,2,3)plot(f,abs(Pcw_T));title('脉压加窗后的时域波形');xlim([4.5e7 5.5e7])
​subplot(2,2,4)plot(f,abs(Pcw_F));title('脉压加窗后的频谱');

程序一仿真结果

程序二

先根据点目标分布,计算出对应的延时,再根据表达式计算回波数据进行仿真。再对回波数据

进行距离向和方位向上的脉冲压缩,得出二维图像。

1.二维回波信号幅度、相位

2.距离向脉冲压缩结果的二维等高线图

3.点目标成像结果;二位等高线图,距离和方位剖面

4.用Hamming窗抑制成像结果副瓣

%%  基本参数和配置 
clc;clear all;close all;v_c =3e+8;%光速T =10e-6;%发射脉冲时间Br=60e6;%距离向带宽lamda=0.03;%波长f0=v_c/lamda;%载频vx=150;%雷达平台运动速度R0=15e3;%场景中心最短斜距Kr=Br/T;%调频斜率Nr=2048;%距离向采样点数,必须要大于T*BrFr=100e6;%距离向采样频率deta_t=1/Fr;%距离向采样时间间隔tr=2*R0/v_c+((0:Nr-1)-Nr/2)*deta_t;%距离向采样时间轴fr=((-Nr/2):(Nr/2-1))/Nr*Fr;PRF=100;%PRFNa=60;%方位向采样点数ta=((0:(Na-1))-Na/2)/PRF;T_sar=Na/PRF;%方位向采样时间fa=((-Na/2):(Na/2-1))/Na*PRF;Ka=2*vx^2/(lamda*R0);
​
%% 根据目标点计算二维回波信号%%计算放置点的参数dot_num_a=1; % 方位向点个数deta_a=100; % 方位向点间距dot_num_r=3; % 距离向点个数deta_r=600; % 距离向点间距dot_xy_cell=cell(1,dot_num_a);
​middle_point_r=ceil(dot_num_r/2);middle_point_a=ceil(dot_num_a/2);line_x=vx*ta;line_y=zeros(1,Na);
​for i_dot_num_a=1:dot_num_adot_xy=zeros(dot_num_r,2);for i_dot_num_r=1:dot_num_rdot_xy(i_dot_num_r,2)=(i_dot_num_r-middle_point_r)*deta_r;dot_xy(i_dot_num_r,1)=(i_dot_num_a-middle_point_a)*deta_a;enddot_xy_cell{1,i_dot_num_a}=dot_xy;end
​slant_range_cell=cell(1,dot_num_a);%计算每个点在所有方位的斜距for i_dot_num_a=1:dot_num_aslant_range=zeros(dot_num_r,Na);%singledot_xy=dot_xy_cell{1,i_dot_num_a};for i_dot_num_r=1:dot_num_rslant_range(i_dot_num_r,:)=sqrt((line_y-(R0+dot_xy(i_dot_num_r,2))).^2+(line_x-dot_xy(i_dot_num_r,1)).^2);%???endslant_range_cell{1,i_dot_num_a}=slant_range;end%计算每个点在所有方位的时延t_delay_cell=cell(1,dot_num_a);for i_dot_num_a=1:dot_num_aslant_range=slant_range_cell{1,i_dot_num_a};t_delay=slant_range*2/v_c;%singlet_delay_cell{1,i_dot_num_a}=t_delay;endecho_data=zeros(Nr,Na);tr_matrix=repmat(tr.',1,Na);%矩阵化处理for i_dot_num_a=1:dot_num_at_delay= t_delay_cell{1,i_dot_num_a};for i_dot_num_r=1:dot_num_rt_delay_matrix=repmat(t_delay(i_dot_num_r,:),Nr,1);%矩阵化处理echo_data=echo_data+rect((tr_matrix-t_delay_matrix)/T).*exp(1j*pi*Kr*(tr_matrix-t_delay_matrix).^2).*exp(-1j*2*pi*f0*t_delay_matrix);endendecho_data_phase=unwrap(angle(echo_data));
% 输出图像figure;subplot(2,1,1)imagesc(abs(echo_data));title('二维信号的幅度');subplot(2,1,2)imagesc(echo_data_phase);title('二维信号的相位');%% 脉冲压缩%距离向脉冲压缩Echo=circshift(fft2(circshift(echo_data,[-Nr/2,-Na/2])),[Nr/2,Na/2]);ref=exp(1j*pi*fr.^2/Kr);ref_matrix=repmat(ref.',1,Na);% 距离向二维匹配滤波器COMP=Echo.*ref_matrix; % 距离向匹配滤波后频域
​%方位向脉冲压缩fr_matrix=repmat(fr.',1,Na);fa_matrix=repmat(fa,Nr,1);Haz=exp(-1j*pi.*(fa.^2)./Ka);Haz_matrix=repmat(Haz,Nr,1); % 方位向二维匹配滤波器SAC=COMP.*Haz_matrix; % 再经方位向脉冲压缩后
​
%     [a b]=find(SAC==max(max(SAC))); % 找出最大值
%     figure;plot(abs(SAC(:,31)));
%     figure;plot(abs(SAC(1599,:)));sac=circshift(ifft2(circshift(SAC,[0,0])),[Nr/2,Na/2]); % 时域图像figure;subplot(2,1,1)imagesc(abs(sac));title('点目标成像时域结果')subplot(2,1,2)imagesc(abs(SAC));title('点目标成像频域结果')
%% 生成Hamming窗window=hamming(1151)*hamming(37).';window_hamming=zeros(2048,60);xx=10;window_hamming(450+xx:1600+xx,13:49)=window;WINDOW_data=window_hamming.*SAC;window_data=circshift(ifft2(circshift(WINDOW_data,[0,0])),[Nr/2,Na/2]);figure;subplot(2,1,1)imagesc(abs(window_data));title('加Hamming窗后时域')subplot(2,1,2)imagesc(abs(WINDOW_data));title('加Hamming窗后频域')
%% 剖面图i_x=1; % 第i个点i_y=1;
​x=1025+300*(i_x-1);y=31+400*(i_y-1);pou=sac(x-10:x+9,y-10:y+9); % 截取pou_range=pou(1:20,11);pou_azimuth=pou(11,1:20);range_db=ifft([fft(pou_range);zeros(980,1)]);tr_db=linspace(tr(x-10),tr(x+10),1000);
​azimuth_db=ifft([fft((pou_azimuth).');zeros(980,1)]);ta_db=linspace(ta(y-10),ta(y+10),1000);
​POU=fft2(pou);POU1=zeros(1000,1000);POU1(1:20,1:20)=POU;pou1=ifft2(POU1);a=max(abs(pou1));b=max(a);pou1_db=20*log10(abs(pou1)/b);c=max(pou1_db);dgx1=[-3 -13 -20 -30];figure;subplot(2,1,1)contour(pou1_db,dgx1);title('-3 -13 -20 -30(db)不加窗时二维图像');xlabel('方位向(m)');ylabel('距离向(m)');
% 加窗pou2=window_data(x-10:x+9,y-10:y+9);
​pou_range2=pou2(1:20,11);pou_azimuth2=pou2(11,1:20);range_db2=ifft([fft(pou_range2);zeros(980,1)]);tr_db=linspace(tr(x-10),tr(x+10),1000);
​azimuth_db2=ifft([fft((pou_azimuth2).');zeros(980,1)]);ta_db=linspace(ta(y-10),ta(y+10),1000);
​POU=fft2(pou2);POU1=zeros(1000,1000);POU1(1:20,1:20)=POU;pou1=ifft2(POU1);a=max(abs(pou1));b=max(a);pou1_db=20*log10(abs(pou1)/b);c=max(pou1_db);dgx2=[-3 -13 -20 -30];subplot(2,1,2)contour(pou1_db,dgx2);title('-3 -13 -20 -30(db)加窗时二维图像');xlabel('方位向(m)');ylabel('距离向(m)');
​
% 加窗对比输出figure;subplot(2,2,1)plot(tr_db,20*log10(abs(range_db)/max(abs(range_db))));title('不加窗的距离像')subplot(2,2,2)plot(ta_db,20*log10(abs(azimuth_db)/max(abs(azimuth_db))));title('不加窗的方位像')subplot(2,2,3)plot(tr_db,20*log10(abs(range_db2)/max(abs(range_db2))));title('加窗的距离像')subplot(2,2,4)plot(ta_db,20*log10(abs(azimuth_db2)/max(abs(azimuth_db2))));title('加窗的方位像')

程序二仿真结果

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

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

相关文章

【力扣 242】有效的字母异位词 C++题解(排序+字符串比较)

给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。 示例 1: 输入: s “anagram”, t “nagaram” 输出: true 示例 2: 输入: s “rat”…

从0构建一个录制UI测试工具

很多UI自动化测试工具都具备录制UI自动化测试的能力,例如playwright,可以通过playwright vscode插件完成录制,如下图所示,当选择录制脚本时,会打开一个浏览器,在浏览器中输入被测应用url,用户在…

C++:enum枚举共用体union

enum枚举 C继承C的枚举用法 (1)典型枚举类型定义,枚举变量定义和使用 (2)枚举类型中的枚举值常量不能和其他外部常量名称冲突: 举例1宏定义,举例2另一个枚举 // 定义一个名为Color的枚举类型 enum Color {RED, // 红色,默认值…

昇思25天学习打卡营第11天|SSD目标检测

1. 学习内容复盘 模型简介 SSD,全称Single Shot MultiBox Detector,是Wei Liu在ECCV 2016上提出的一种目标检测算法。使用Nvidia Titan X在VOC 2007测试集上,SSD对于输入尺寸300x300的网络,达到74.3%mAP(mean Average Precision)…

JAVA毕业设计145—基于Java+Springboot+vue+uniapp的驾校预约小程序(源代码+数据库+15000字论文)

毕设所有选题: https://blog.csdn.net/2303_76227485/article/details/131104075 基于JavaSpringbootvueuniapp的驾校预约小程序(源代码数据库15000字论文)145 一、系统介绍 本项目前后端分离,分为用户、教练、管理员三种角色 1、用户: …

Redis数据结构——跳跃表(Skiplist)

Redis数据结构——跳跃表(Skiplist) Redis作为一个高性能的键值存储系统,提供了多种数据结构供开发者选择。其中,跳跃表(Skiplist)是一种特殊的数据结构,它在Redis中主要用于实现有序集合&…

ModuleNotFoundError: No module named ‘_sysconfigdata_x86_64_conda_linux_gnu‘

ModuleNotFoundError: No module named _sysconfigdata_x86_64_conda_linux_gnu 1.软件环境⚙️2.问题描述🔍3.解决方法🐡4.结果预览🤔 1.软件环境⚙️ Ubuntu 20.04 Python 3.7.0 2.问题描述🔍 今天发现更新conda之后&#xff0…

Redisson(分布式锁、限流)

注意Redisson是基于Redis的&#xff0c;所以必须先引入Redis配置&#xff08;参考SpringBoot集成Redis文章&#xff09; 1. 集成Redisson 引入依赖 <!-- 二选一,区别是第一个自动配置&#xff0c;第二个还需要手动配置也就是第二步自定义配置&#xff0c;注意版本号&…

Windows怎么实现虚拟IP

在做高可用架构时&#xff0c;往往需要用到虚拟IP&#xff0c;在linux上面有keepalived来实现虚拟ip的设置。在windows上面该怎么弄&#xff0c;keepalived好像也没有windows版本&#xff0c;我推荐一款浮动IP软件PanguVip&#xff0c;它可以实现windows上面虚拟ip的漂移。设置…

UE5材质之HLSL:深度

UE4/5的Custom节点&#xff1a;在VScode使用HLSL&#xff08;新手入门用&#xff09;_vscode写hlsl-CSDN博客 效果&#xff1a; 材质节点&#xff1a; 自定义节点代码&#xff1a; float3 rayStepViewDir*-1; float4 inputTexTexture2DSample(TexObject,TexObjectSampler,uv)…

字体属性(笔记)

字体属性: 含义属性参数说明例子字体样式font-family字体样式的名称可以是使用多个字体样式&#xff0c;后面作为备用字体&#xff0c;font-family&#xff1a;“微软雅黑”&#xff0c;“宋体”;字体大小font-size像素:px,em,remfont-size:20px&#xff1b;字体颜色color颜色…

如何用 PHP 实现一个自定义爬虫框架

随着互联网的不断发展&#xff0c;信息量爆炸式增长&#xff0c;获取有价值的信息已经成为了许多人的需求。在这样的大环境下&#xff0c;爬虫技术逐渐兴起&#xff0c;成为了大数据时代的重要工具之一。爬虫技术的应用十分广泛&#xff0c;其可以用于网络舆情监测、数据分析、…

docker中mysql突然无法远程连接设置

docker登陆到docker.hub docker login -u 用户名 回车密码 将容器打包成自己的镜像 docker commit -a "用户名" -m "redis" 533d6f1402ca 用户名/myredis:v1.2 将镜像发布到平台上 docker push用户名/myredis:v1.2 删除本地镜像 docker rm image …

JavaSE主要内容(全套超完整)

一、为什么选择Java&#xff08;Java的优势&#xff09; 1、应用面广&#xff1a; 相较于其他语言&#xff0c;Java的应用面可谓是非常广&#xff0c;这得益于他的跨平台性和其性能的稳定性。他在服务器后端&#xff0c;Android应用开发&#xff0c;大数据开发&#xf…

MATLAB中添加 Git 子模块

目录 更新子模块 对子模块使用提取和合并 使用推送将更改发送到子模块存储库 要重用其他存储库中的代码&#xff0c;可以指定 Git™ 子模块。 要将外部 Git 存储库克隆为子模块&#xff0c;请执行以下操作&#xff1a; 在 MATLAB 当前文件夹浏览器中点击右键&#xff0c;然…

Jmeter性能场景设计

为什么会有性能场景设计呢&#xff1f; 相信有部分同学对场景设计优点模糊&#xff0c;前面博文提到的是场景提取 场景设计&#xff1a;在压测的过程中怎么设置线程数、Ramp-Up时间(秒)、循环次数等等 一、 性能场景分类 场景的概念&#xff1a; a. 单场景 b. 混合场景 c. 容…

Python学习笔记17 -- 猜数字小游戏2

目录 一、功能函数 1、说明函数 -- 对游戏玩法及设置进行说明 2、答案函数 -- 生成答案 3、猜测函数 -- 让玩家进行猜测 4、对照函数 -- 将答案和猜测进行对照 4.1 A函数 4.2 B函数 5、结果函数 -- 判断得到结果或继续猜测 6、时间函数 -- 判断一局游戏所用时间 7、打…

开源项目-商城管理系统

哈喽,大家好,今天主要给大家带来一个开源项目-商城管理系统 商城管理系统分前后端两部分。前端主要有商品展示,我的订单,个人中心等内容;后端的主要功能包括产品管理,门店管理,会员管理,订单管理等模块 移动端页面

深入理解深度神经网络(DNN)

深入理解深度神经网络&#xff08;DNN&#xff09; 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 什么是深度神经网络&#xff08;DNN&#xff09;&#xff…

力扣第216题“组合总和 III”

在本篇文章中&#xff0c;我们将详细解读力扣第216题“组合总和 III”。通过学习本篇文章&#xff0c;读者将掌握如何使用回溯法来解决这一问题&#xff0c;并了解相关的复杂度分析和模拟面试问答。每种方法都将配以详细的解释&#xff0c;以便于理解。 问题描述 力扣第216题…