jjzjj

线性调频脉冲雷达信号

nwsuaf_huasir 2023-08-30 原文

信号模型

线性调频信号具有一个优势,那就是不减小脉宽的情况下,同样能够提高雷达的分辨力。
现代雷达普遍采用线性调频体制,了解线性调频雷达信号很重要。
一般情况下,线性调频雷达信号,定义为
s ~ ( t ) = r e c t ( t τ ) e x p [ j 2 π ( f c t + 1 2 μ t 2 ) ] (1) \tilde{s}(t)=rect(\frac{t}{\tau})\mathrm{exp}[j2\pi (f_ct+\frac{1}{2}\mu t^2)] \tag{1} s~(t)=rect(τt)exp[j2π(fct+21μt2)](1)
式(1)中, r e c t ( t ) rect(t) rect(t)为矩形脉冲,其归一化为
r e c t ( t τ ) = { 1 0 ≤ t ≤ 1 0 t > 1 , t < 0 (2) rect(\frac{t}{\tau})=\begin{cases} 1 \qquad 0\le t \le 1 \\ 0 \qquad t>1,t<0 \end{cases} \tag{2} rect(τt)={10t10t>1,t<0(2)
f c f_c fc为雷达信号的载频,、 μ \mu μ为调频斜率, μ = B / τ \mu =B/\tau μ=B/τ B B B为雷达信号的带宽。

复数形式的信号模型

在雷达信号处理中,经常采用复数形式,这是因为雷达接收机往往采用的是IQ解调。雷达信号往往是窄带的,复数形式的线性调频信号可以表示为:
s ~ ( t ) = r e c t ( t τ ) e x p [ j 2 π ( f c t + 1 2 μ t 2 ) ] = r e c t ( t τ ) e x p ( j π μ t 2 ) e x p ( j 2 π f c t ) = s ( t ) e x p ( j 2 π f c t ) (3) \tilde{s}(t)=rect(\frac{t}{\tau})\mathrm{exp}[j2\pi (f_ct+\frac{1}{2}\mu t^2)] \\ = rect(\frac{t}{\tau})\mathrm{exp}(j\pi \mu t^2)\mathrm{exp}(j2\pi f_c t)\\ \tag{3} =s(t)\mathrm{exp}(j2\pi f_c t) s~(t)=rect(τt)exp[j2π(fct+21μt2)]=rect(τt)exp(jπμt2)exp(j2πfct)=s(t)exp(j2πfct)(3)
式(3)中 s ( t ) s(t) s(t)被称为复包络,注意这个 s s s上面没有波浪线了, e x p ( j 2 π f c t ) \mathrm{exp}(j2\pi f_c t) exp(j2πfct)被称为复载频。由于复载频是不包含有信息的,因此在信号处理中我们可以把它忽略掉。

信号仿真

编程实现一下,可以加深理解,巩固已有的概念,同时也是在强迫自己输出。
仿真参数如下:

  1. 采样率 f s = 30 f_s=30 fs=30MHz;
  2. 脉宽 τ = 10 μ s \tau=10\mu s τ=10μs
  3. 脉冲重复周期 P R I = 100 μ s PRI=100\mu s PRI=100μs
  4. 带宽B=10MHz;

下面是matlab仿真代码:

%% 线性调频信号仿真
% 2022.5.26
clear all; close all; clc;
%% 仿真参数设置
T = 100e-6; % 仿真时长
PRI = 100e-6;% 脉冲重复周期100us
tau = 10e-6; % 脉冲宽度为10us
fs = 30e6; % 采样率30MHz
B = 10e6; % 信号带宽为10MHz
%% 计算参数
dutyCy = tau/PRI; % 脉冲占空比
fr = 1/PRI; % 脉冲重复频率
dt = 1/fs; % 采样间隔
t = 0:dt:T-dt; % 时间刻度向量
mu = B/tau; % 调频斜率
%% 线性调频信号
s = exp(j*pi*mu*t.*t); %线性调频信号
%% 脉冲调制
x=square(2*pi*fr*t,dutyCy*100)./2+0.5; % 未调制的脉冲信号
sHat = x.*s;
%% 绘图
plot(t,x.*s)

图1. 线性调频信号

我们可以只仿真脉冲内的信号,调整一下仿真时长即可,仿真时间长度就等于脉冲宽度,并且也不需要将线性调频信号和门函数相乘。

%%仅仅仿真了脉冲宽度内的调频信号
% 2022.5.27
clear all; close all; clc;
%% 仿真参数设置
T = 10e-6; % 仿真时长等于脉冲宽度10us
PRI = 100e-6;% 脉冲重复周期100us
tau = 10e-6; % 脉冲宽度为10us
fs = 30e6; % 采样率30MHz
B = 10e6; % 信号带宽为10MHz
%% 计算参数
dutyCy = tau/PRI; % 脉冲占空比
fr = 1/PRI; % 脉冲重复频率
dt = 1/fs; % 采样间隔
t = 0:dt:T-dt; % 时间刻度向量
mu = B/tau; % 调频斜率
N = length(t); %序列长度

%% 线性调频信号
s = exp(j*pi*mu*t.*t); %线性调频信号
% %% 脉冲调制
% x=square(2*pi*fr*t,dutyCy*100)./2+0.5; % 未调制的脉冲信号
%% 频域分析
S = (fft(s))*2/N; %进行fft
amplitudeS = abs(S); % 幅度谱
normAmpliS =  amplitudeS./max(amplitudeS); % 幅度谱进行归一化
%% 绘图
figure
plot(t,real(s))
xlabel('时间/us');
ylabel('归一化幅度');
figure
plot(0:(fs/N):(fs/2-fs/N),normAmpliS(1:floor(N/2)))
xlabel('频率/MHz');
ylabel('归一化幅度');

图2. 脉冲宽度内的线性调频信号

频域分析:

图3. 线性调频信号的归一化幅度谱

线性调频信号仿真探究

看到一些仿真,是将信号载频 f c f_c fc当作中频对待,那么基带信号的顺时频率便是 ( − B / 2 , B / 2 ) (-B/2,B/2) (B/2,B/2)。这时候该怎么仿真呢?只需要将线性调频信号的时间 t t t设置为 ( − T / 2 , T / 2 ) (-T/2,T/2) (T/2,T/2)即可。

%% 线性调频信号仿真
%%仿真了线性调频信号
%%fc为中频 
% 2022.5.26
clear all; close all; clc;
%% 仿真参数设置
T = 100e-6; % 仿真时长等于脉冲宽度100us
PRI = 100e-6;% 脉冲重复周期100us
tau = 10e-6; % 脉冲宽度为10us
fs = 40e6; % 采样率30MHz
B = 10e6; % 信号带宽为10MHz
JSR = 20; % 干信比为20 dB
%% 计算参数
dutyCy = tau/PRI; % 脉冲占空比
fr = 1/PRI; % 脉冲重复频率
dt = 1/fs; % 采样间隔
tt = 0:dt:T-dt; % 整个脉冲周期PRI
t = -tau/2:dt:tau/2-dt; % 脉冲宽度时间刻度向量,从负到正
matchFt = 0:dt:tau-dt;
mu = B/tau; % 调频斜率
N = length(tt); % 序总列长度
Npri = length(t); % 线性调频信号脉冲内的长度
%% 线性调频信号
s = exp(j*pi*mu*t.*t); % 线性调频信号(仅脉冲内)
x = zeros(1,N); % 一个完整的PRI信号预设变量
x(1:Npri) = s; % 添加脉冲内的线性调频信号
%% 脉冲调制
% 匹配滤波器单位冲击响应
h = exp(-j*pi*mu*t.*t); %匹配滤波器单位冲击响应
so = conv(x,h); % 卷积实现匹配滤波
%% 频域分析
S = real(x);
S = ((fft(S)))*2/N; %进行fft
amplitudeS = abs(S); % 幅度谱
normAmpliS =  amplitudeS./max(amplitudeS); % 幅度谱进行归一化
%% 绘图
figure
plot(real(s)./max(real(s)))
xlabel('时间/us');
ylabel('归一化幅度');
figure
plot(real(x))
xlabel('时间/us');
ylabel('归一化幅度');
figure
plot(0:(fs/N):(fs/2-fs/N),normAmpliS(1:floor(N/2))) %幅度谱
xlabel('频率/MHz');
ylabel('归一化幅度');

图4. 线性调频信号

图5. 完整的PRI的线性调频信号

图6. 幅度谱

有关线性调频脉冲雷达信号的更多相关文章

  1. Verilog使用inout信号的方法 - 2

    目录一、inout在设计文件中的使用方法1.1、inout的第一种使用方法1.2、inout实现的第二种使用方法1.3、inout使用总结 二、inout在仿真测试中的使用方法一、inout在设计文件中的使用方法在FPGA的设计过程中,有时候会遇到双向信号(既能作为输出,也能作为输入的信号叫双向信号)。比如,IIC总线中的SDA信号就是一个双向信号,QSPIFlash的四线操作的时候四根信号线均为双向信号。在Verilog中用关键字inout定义双向信号,这里总结一下双向信号的处理方法。1.1、inout的第一种使用方法  实际上,双向信号的本质是由一个三态门组成的,三态门可以输出高电平,低电

  2. ruby - 在 Ruby 中使用 GTK3 自定义信号 - 2

    我想从gtk3中的Widget发出自定义信号。在GTK2中,有一个名为signal_new的函数来创建一个新信号。您可以在此处查看示例:https://github.com/ruby-gnome2/ruby-gnome2/blob/ec373f87e672dbeeaa157f9148d18b34713bb90e/glib2/sample/type-register.rb在GTK3中,这个功能似乎不再可用。那么在ruby​​的GTK3中创建自定义信号的新方法是什么? 最佳答案 GTK3更改为使用define_signal方法而不是si

  3. ruby - QtRuby 使用参数/参数连接信号和槽 - 2

    我想知道如何连接到带参数的信号(使用Rubyblock)。我知道如何连接到一个不带参数的:myCheckbox.connect(SIGNAL:clicked){doStuff}但是,这不起作用:myCheckbox.connect(SIGNAL:toggle){doStuff}它不起作用,因为切换槽采用参数voidQAbstractButton::toggled(boolchecked)。我怎样才能让它与参数一起工作?谢谢。 最佳答案 对您的问题的简短回答是,您必须使用slots方法声明要连接的插槽的方法签名:classMainGU

  4. ruby - 发送信号时运行代码,但不要在 Ruby 中捕获信号 - 2

    我有在服务器上运行的代码,在服务器硬关闭之前,发送了一个信号SIGTERM让我的代码知道它需要清理。我想在发生这种情况时运行代码并将信号发送回同一个程序,以便任何其他需要清理的代码都可以这样做。我不想捕获信号或改变信号行为,我只需要在我的程序的其余部分解释SIGTERM之前运行一些东西。目前我可以做类似的事情Signal.trap('TERM')doputs"Gracefulshutdown"exitend但如果同一个应用中的多段代码试图做同样的事情,它就不起作用了。例如:Signal.trap('TERM')doputs"Gracefulshutdown"exitendSignal.

  5. 线性代数让我想想:快速求三阶矩阵的逆矩阵 - 2

    快速求三阶矩阵的逆矩阵前言一般情况下,我们求解伴随矩阵是要注意符号问题和位置问题的(如下所示)A−1=1[  ][−[  ]−[  ]−[  ]  −[  ]]=A−1=1[  ][   M11−[M12]   M13−[M21]   M22−[M23]     M31−[M32]   M33]⊤\begin{aligned}&A^{-1}=\frac{1}{[\\]}\left[\begin{array}{cccccc}&-[\\]&\\-[\\]&&-[\\]\\\\&-[\\]&\\\end{array}\right]=\\\\&A^{-1}=\frac{1}{[\\]}\left[\b

  6. 相机内参标定,相机和激光雷达联合标定 - 2

    相机内参标定,相机和激光雷达联合标定一、相机标定原理1.1成像过程1.2标定详解二、相机和激光雷达联合标定2.1标定方法汇总2.2Autoware的安装与运行2.2.1安装方式2.2.2安装Autoware的依赖(Ubuntu16.04/kinetic)2.2.3编译Autoware1.创造工作空间2.下载Autoware源码3.其他依赖4.编译5.效果2.3Autoware标定激光雷达和相机的外参过程一、相机标定原理1.1成像过程现实物体在相机中的成像过程离不开世界坐标系、相机坐标系、图像坐标系以及像素坐标系,只有理解了这些才能对获取的图像进行准确的分析。成像过程:四个坐标系如下图所示:世界

  7. ruby - 如何测试 RSpec 中的信号处理,特别是 SIGTERM 的处理? - 2

    Heroku可能会出于各种原因向您的应用程序发送SIGTERM,因此我创建了一个处理程序来处理一些清理工作,以防发生这种情况。一些谷歌搜索没有给出任何关于如何在RSpec中测试它的答案或示例。这是基本代码:Signal.trap('TERM')docleanupenddefcleanupputs"doingsomecleanupstuff"...exitend当程序收到SIGTERM时,测试调用此清理方法的最佳方法是什么? 最佳答案 使用Process.kill'TERM',0将信号发送到RSpec并测试调用处理程序。确实,如果信号

  8. ruby - 我怎样才能告诉 unicorn 理解 Heroku 的信号? - 2

    也许你已经看到了这个......2012-03-07T15:36:25+00:00heroku[web.1]:StoppingprocesswithSIGTERM2012-03-07T15:36:36+00:00heroku[web.1]:StoppingprocesswithSIGKILL2012-03-07T15:36:36+00:00heroku[web.1]:ErrorR12(Exittimeout)->Processfailedtoexitwithin10secondsofSIGTERM2012-03-07T15:36:38+00:00heroku[web.1]:Proces

  9. ruby - Windows 上有哪些 Process.kill 信号可用? - 2

    来自Process.kill的文档:Sendsthegivensignaltothespecifiedprocessid(s)ifpidispositive.IfpidiszerosignalissenttoallprocesseswhosegroupIDisequaltothegroupIDoftheprocess.signalmaybeanintegersignalnumberoraPOSIXsignalname(eitherwithorwithoutaSIGprefix).Ifsignalisnegative(orstartswithaminussign),killsproces

  10. 用于进行线性或非线性最小二乘近似的 Ruby 库? - 2

    是否有Ruby库允许我对一组数据进行线性或非线性最小二乘法逼近。我想做的是:给定一系列[x,y]数据点针对该数据生成线性或非线性最小二乘法近似值库不必弄清楚它是否需要进行线性或非线性近似。库的调用者应该知道他们需要什么类型的回归我不想尝试移植某些C/C++/Java库来获得此功能,因此我希望有一些现有的Ruby库可供我使用。 最佳答案 尝试使用“statsample”gem。您可以使用下面提供的示例执行对数、指数、幂或任何其他转换。我希望这有帮助。require'statsample'#IndependentVariablex_da

随机推荐