线性调频与脉冲压缩
1 线性调频信号
1.1 线性调频信号(时域)
1.1.1 线性调频信号模型
线性调频信号(Chirp, LFM) 是指瞬时频率随时间线性变化的信号。
(1)时域表达式
s(t)=rect(Tt)exp(jπKt2)
其中,T 为时宽,K 为调频率,rect() 为矩形窗函数。
(2)相位
φ(t)=πKt2
(3)瞬时频率
f(t)=2π1dtdφ(t)=2π1dtd(πKt2)=Kt
(4)信号带宽
BW=∣K∣T
(5)时间带宽积
TBP=∣K∣T2
1.1.2 线性调频信号时域仿真
(1)信号参数
① 时宽 Tr = 1 us
② 带宽 Br = 100 MHz
③ 采样率 Fs = 4 * Br
(2)仿真结果
1.2 线性调频信号(频域)
1.2.1 驻定相位原理(POSP)
(1)基本原理
信号在相位驻留点邻域附近是缓变的,而在其他时间点_上是迅变的,相位迅变处由于相位周期的正负部分相互抵消,故其对积分的贡献几乎为零,对积分起主要作用的部分集中在相位驻留点附近。
因此,驻定相位原理适用于相位包含二次及高次项,且包络缓变的信号频谱求解;’
对于包络 w(t) 缓变,且相位 ϕ(t) 包含高次项的信号
g(t)=w(t)⋅exp{j⋅ϕ(t)}
根据POSP求解其频谱为:
G(f)=∫−∞+∞w(t)⋅exp{j⋅ϕ(t)}⋅exp(−j2πft)dt=∫−∞+∞w(t)⋅exp{j⋅[ϕ(t)−2πft]}dt=∫−∞+∞w(t)⋅exp{j⋅θ(t)}dt≈POSPw[t(f)]⋅exp{j⋅θ[t(f)]}
(2)POSP求解步骤
① 待求解信号
g(t)=w(t)⋅exp{j⋅ϕ(t)}
其中,包络 w(t) 缓变,且相位 ϕ(t) 包含高次项。
② 相位函数
θ(t)=ϕ(t)−2πft
其中,t 为自变量,f 为参数。
③ 求解驻留点
令:
dtdθ(t)=dtd[ϕ(t)−2πft]=0
求解方程得到驻留点 t(f)
④ 将驻留点代入频谱得解
G(f)≈POSP∣ϕ′′[t(f)]∣2π⋅w[t(f)]⋅exp{j[θ(t(f))+4π]}≈w[t(f)]⋅exp{j⋅θ[t(f)]}
1.2.2 线性调频信号频谱
直接对线性调频信号求傅里叶变换:
S(f)=∫−∞+∞rect(Tt)exp(jπKt2)exp(−j2πft)dt
积分内存在指数上方的二次项积分,无法直接求解。故采用驻点相位定理求解如下:
令相位函数:
θ(t)=πKt2−2πft
求导等于0:
dtdθ(t)=dtd(πKt2−2πft)=2πKt−2πf=0
得驻定相位点为:
t(f)=Kf
因此:
w[t(f)]=rect(Tt(f))=rect(KTf)
θ[t(f)]=πKt2(f)−2πft(f)=πK(Kf)2−2πf(Kf)=−πKf2
从而得到线性调频信号频谱为:
S(f)=w[t(f)]⋅exp{j⋅θ[t(f)]}=rect(KTf)⋅exp{−jπKf2}
且TBP越大,POSP越准确(因为TBP越大,实际频谱越接近矩形窗)。
1.2.3 线性调频信号频谱仿真
幅度谱 |
相位谱 |
|
|
2 脉冲压缩
2.1 匹配滤波器
匹配滤波器是线性系统的最大信噪比滤波器。信号和噪声叠加在一起,匹配滤波使信号成分在某一瞬时出现峰值,而噪声成分受到抑制,即使输出的信噪比最大。
2.1.1 匹配滤波器推导
设 t=tm 时刻输出信噪比最大,信噪比表示为:
ρ=no2(tm)so2(tm)
利用频域表达式可得输出信号为:
so(t)=F−1{S(jω)H(jω)}=2π1∫−∞+∞S(jω)H(jω)exp(jωt)dω
白噪声平均功率为:
no2(t)=2π1∫−∞+∞N⋅∣H(jω)∣2dω
则信噪比可表示为:
ρ=no2(tm)so2(tm)=2πN⋅∫−∞+∞∣H(jω)∣2dω∣∣∣∫−∞+∞S(jω)H(jω)exp(jωtm)dω∣∣∣2
根据柯西不等式:
∣∣∣∣∫−∞+∞H(jω)S(jω)exp(jωtm)dω∣∣∣∣2⩽∫−∞+∞∣H(jω)∣2dω⋅∫−∞+∞∣S(jω)exp(jωtm)∣2dω
当且仅当
H(jω)=k[S(jω)exp(jωtm)]∗
时,等号成立,即信噪比取得最大值。
最终,得到匹配滤波器为
H(jω)=k⋅S(−jω)⋅exp(−jωtm)
两端同取傅里叶逆变换,并根据傅里叶变换的频移性质可得:
h(t)=k⋅s(tm−t)
一般地,取k=1,tm=0
h(t)=s(−t)
2.1.2 匹配滤波器理解
匹配滤波器系统输出为:
so(t)=s(t)∗h(t)=∫−∞+∞s(τ)h(t−τ)dτ
由于 h(t)=s(−t),因此输出也可写作
so(t)=∫−∞+∞s(τ)s(τ−t)dτ
可见,匹配滤波的过程可看作接收信号sr与系统冲激响应ht的卷积
so = conv( sr , ht) = conv( sr , conj(fliplr( si )) );
也可看作发射信号si与接收信号sr的相关。
so = xcorr( sr , si );
2.2 线性调频信号脉冲压缩的匹配滤波实现
对于线性调频信号,时域为:
s(t)=rect(Tt)exp(jπKt2)
频谱为:
S(f)=rect(KTf)⋅exp{−jπKf2}
2.2.1 时域匹配滤波
根据 h(t)=s(−t) 可构造时域匹配滤波器为发射信号时间反褶再取共轭。再与发射信号进行线性卷积即可实现脉冲压缩:
so(t)=s(t)∗s(−t)
2.2.2 频域匹配滤波
2.2.2.1 方法一
(1)原理
将发射信号时间反褶后取共轭,补零后计算FFT;再与信号补零后的FFT在频域相乘,最后IFFT。
so(t)=IFFT{FFT[s(−t),N]⋅FFT[s(t),N]}
(2)说明
-
为什么需要补零?
因为匹配滤波需要计算线性卷积,但 (DFT) FFT 计算的是循环卷积,所以需要对信号进行补零直到长度超过线性卷积的长度。对于点数分别为N1与N2的两信号,它们线性卷积的长度为 N1+N2-1;若循环卷积长度为N,则有如下关系:
① N < N1 + N2 - 1 时,循环卷积是线性卷积长度为 N 的混叠
② N = N1 + N2 - 1 时,循环卷积 = 线性卷积
③ N > N1 + N2 - 1 时,循环卷积 = 线性卷积末尾补 N-(N1+N2-1) 个 0 (弃置区)
-
弃置区位置
由于发射是反褶后再补零,故最终得到IFFT结果后,弃置区位于信号前端。
(3)仿真
2.2.2.2 方法二
(1)原理
将发射脉冲补零后进行FFT,再取共轭(无需反褶),与信号补零FFT在频域相乘,最后IFFT。
so(t)=IFFT{FFT[s(t),N]⋅FFT[s(t),N]}
(2)说明
(3)仿真
2.2.2.3 方法三
(1)原理
直接在频域生成匹配滤波器
H(f)=rect{∣K∣Tf}exp{jπKf2}
与信号FFT在频域相乘,最后IFFT。
so(t)=IFFT{FFT[s(t)]⋅H(f)}
(2)仿真
2.3 加窗处理
2.3.1 性能指标
(1)冲激响应宽度(IRW),冲激响应的 3dB 宽度。
(2)峰值旁瓣比(PSLR),最大旁瓣与峰值的高度比。
(3)积分旁瓣比(ISLR),旁瓣能量与主瓣能量的比值。
2.3.2 各类窗效果对比
2.3.3 脉冲压缩加窗
窗名 |
频谱加窗 |
脉压结果 |
矩形窗 |
|
|
三角窗 |
|
|
汉宁窗 |
|
|
汉明窗 |
|
|
布莱克曼窗 |
|
|
3 脉冲压缩测距仿真
3.1 实现流程
- 参数设置
信号时宽 T = 6 us 信号带宽 B = 400 MHz 目标距离 R = [ 995, 1000, 1001, 1005 ] m 后向散射 σ = [ 1, 1.5 , 2.25, 3.375]
- 系统参数导出
采样率 Fs = 5 * B 调频率 K = B / T 采样点数 N = round( T * Fs )
- 目标参数导出
目标个数 M = length( R ) 中心距离 R0 = mean( R ) 最大探测距离范围 Rwid = T * c / 2 最远探测距离 Rmax = floor( R0 + Rwid / 2 ) 最近探测距离 Rmax = floor( R0 - Rwid / 2 )
- 回波参数
发射时间序列 t = linspace( 2 * Rmin / c , 2 * Rmax / c , N ) 回波时间序列 td = t - 2 * R / c
- 回波信号
sr(t)=σ⋅rect(Ttd)⋅exp(jπK⋅td2)
- 脉冲压缩
方式2
so(t)=IFFT{FFT[st(t),Nfft]⋅FFT[sr(t),Nfft]}
- 弃置区处理
脉压信号起始点 N0 = ( Nfft - N ) / 2 脉压信号截取 so = so( N0 , N0 + N -1 )
- 绘图
3.2 仿真结果
回波信号 |
脉压测距结果 |
脉压测距结果(局部放大)/dB |
|
|
|
附录:MATLAB程序
全部完整程序
部分测试程序
%% 线性调频与脉冲压缩
clear,clc,close all
set(0,'defaultfigurecolor','w')
%% Chirp信号参数设置
Tr = 1e-6;%时宽
Br = 200e6;%带宽
Fs = 4*Br;%采样率
%% Chirp信号参数导出
Kr = Br/Tr;%调频率
N = round( Tr / (1/Fs) );%采样点数
t = linspace( -Tr/2 , Tr/2 , N);%在[-Tp/2,Tp/2]选取采样点
%% Chirp信号生成
st = ( abs(t) < Tr/2 ) .* exp( 1j * pi * Kr * t.^2 );
f_chirp= Kr * t; %信号频率
phase_chirp = pi * Kr * t.^2;%信号相位
%% 频谱
freq = linspace(-Fs/2,Fs/2,N);%频域采样
Sf = fftshift( fft(st) );
%% 时域匹配滤波
ht = conj( fliplr(st) ); %时域匹配滤波为发射信号时间反褶再取共轭
s1 = conv(st,ht); %线性调频信号经过匹配滤波器后的输出(时域卷积)
N1 = N+N-1 ;%线性卷积后信号长度变为 N1+N2-1
t1 = linspace( -Tr/2 , Tr/2 , N1);
%% 频域匹配滤波1 (复制发射脉冲进行时间反褶并取共轭,计算补零DFT)
N2 = 2*N; %循环卷积长度 (N2应当>=N+N-1,其中弃置区位于长度大于N+N-1的部分)
t2 = linspace( -Tr/2 , Tr/2 , N2);
Hf2 = fft(ht,N2); %频域匹配滤波器
Sf2 = fft(st,N2);%频域信号
S2 = Sf2 .* Hf2;%频域乘积
s2 = ifft(S2);
%% 绘图
% 时域
figure,plot( t*1e6, real(st) ),xlabel('t /us'),ylabel('幅度'),title('Chirp信号实部');
figure,plot( t*1e6, imag(st) ),xlabel('t /us'),ylabel('幅度'),title('Chirp信号虚部');
figure,plot( t*1e6, f_chirp/1e6 ),xlabel('t /us'),ylabel('频率 /MHz'),title('Chirp信号频率');
figure,plot( t*1e6, phase_chirp ),xlabel('t /us'),ylabel('相位 /rad'),title('Chirp信号相位');
% 频域
figure,plot( freq/1e6,abs(Sf) ),xlabel('f /MHz'),ylabel('幅度谱'),title('Chirp信号 幅度谱');
figure,plot( freq/1e6,-pi*freq.^2/Kr ),xlabel('f /MHz'),ylabel('相位谱'),title('Chirp信号 相位谱');
% 时域匹配滤波
figure,plot( t1*1e6 , abs(s1) ),xlabel('t /us'),ylabel('幅度谱'),title('时间反褶取共轭,时域卷积');
% 频域匹配滤波1
%线性调频脉冲压缩测距
clear,clc,close all
%% 参数设置
T = 6e-6;%信号持续时间(脉冲宽度6us)
B = 400e6;%信号调频带宽(40MHz)
Fs = 5*B;%采样率
R = [995,1000,1001,1005];%目标距离
RCS = [1 1.5 2.25 3.375];%目标有效面积
%% 导出参数
%系统参数
C = 3e8;
K = B/T;%调频率
Ts = 1/Fs; %时域采样间隔
N = round(T/Ts);%时域采样点数
%目标参数
M = length(R);%目标的个数
R0 = mean(R);%参考中心距离(用于保证目标在一个回波探测距离内)
Rwid = T * C/2;%能观察到的最大距离范围(最远距离-最近距离)
Rmax = floor( R0 + Rwid/2 );%观测目标距雷达的最远位置
Rmin = floor( R0 - Rwid/2 );%观测目标距雷达的最近位置
%回波参数
t = linspace(2*Rmin/C,2*Rmax/C,N);
td = ones(M,1)*t - 2 * R'/C * ones(1,N);
%% 回波信号
Srt = RCS * ( exp(1j*pi*K*td.^2) .* (abs(td)<T/2) );
%% 脉冲压缩
%复制发射信号
t0 = linspace(-T/2,T/2,N);
St = exp(1j*pi*K*t0.^2);%发射的LFM信号
%匹配滤波
Nfft = 2^nextpow2(N+N-1);
Srw = fft(Srt,Nfft);%对回波信号求FFT
Sw = conj( fft(St,Nfft) ); %方法二
Sot = fftshift(ifft(Srw.* Sw));
N0 = (Nfft-N)/2;
Z = abs( Sot( N0 : (N0+N-1)) );
% 归一化并取dB
Z = Z/max(Z);
ZdB = 10*log10(Z);
%% 绘图
figure,plot(t*1e6,real(Srt))
axis tight,xlabel('时间 / us');ylabel('幅度'),title('原始雷达回波');
figure,plot(t*C/2,Z)
xlabel('距离 / m'),ylabel('幅度'),title('脉冲压缩测距')
figure,plot(t*C/2,ZdB)
xlabel('距离 / m'),ylabel('幅度 / dB'),title('脉冲压缩测距(局部放大)')