線性調頻與脈衝壓縮
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('脈衝壓縮測距(局部放大)')