Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

レーダーのパルス圧縮

この例では、送信パルスの変調と、受信信号との相関を行う、"パルス圧縮" の効果を説明します。パルス圧縮は、レーダー システムやソナー システムにおいて、エコーの持続時間を短くすることで S/N 比 (SNR) と範囲分解能を改善するために使用されます。

時間領域の相互相関

矩形チャープ

最初に、矩形パルスでのパルス圧縮を可視化します。周波数 f010 Hz、サンプル レート fs1 kHz として、長さ 1 秒間のパルスを作成します。

fs = 1e3;
tmax = 15;
tt = 0:1/fs:tmax-1/fs;
f0 = 10;
T = 1;
t = 0:1/fs:T-1/fs;
pls = cos(2*pi*f0*t);

最初のパルスに基づき、ノイズなしで、5 秒から開始する受信信号を作成します。この信号は、徐々に離れていくターゲットを表し、反射される信号は 2 秒ごとに分割されます。反射率項 ref は、受信パルスが、送信パワーのどれくらいの割合をもっているかを決定します。減衰係数 att は、信号の強さが時間の経過につれてどのくらい減少するかを示します。

t0 = 5;
dt = 2*T;
lgs = t0:dt:tmax;
att = 1.1;
ref = 0.2;
rpls = pulstran(tt,[lgs;ref*att.^-(lgs-t0)]',pls,fs);

ガウス ホワイト ノイズを付加します。15 dB の SNR を指定します。

SNR = 15;
r = randn(size(tt))*std(pls)/db2mag(SNR);
rplsnoise = r+rpls;

受信信号と送信パルスを相互相関させ、処理された信号をプロットします。わかりやすくするため、上のグラフに、送信パルス、ノイズなしの受信パルス、ノイズのある受信信号をプロットしています。

[m,lg] = xcorr(rplsnoise,pls);
m = m(lg>=0);
tm = lg(lg>=0)/fs;

subplot(2,1,1)
plot(tt,rplsnoise,t,pls,tt,rpls)
xticks(lgs)
legend('Noisy Received','Initial Pulse','Noiseless Received')
title('Transmitted/Received Signals')
ylabel('Magnitude (L.U.)')

subplot(2,1,2)
plot(tm,abs(m))
xticks(lgs)
title('Matched Filter Output')
xlabel('Time (s)')
ylabel('Magnitude (L.U.)')

Figure contains 2 axes objects. Axes object 1 with title Transmitted/Received Signals, ylabel Magnitude (L.U.) contains 3 objects of type line. These objects represent Noisy Received, Initial Pulse, Noiseless Received. Axes object 2 with title Matched Filter Output, xlabel Time (s), ylabel Magnitude (L.U.) contains an object of type line.

これが複数のターゲットからのエコーであれば、エコーは十分に離れて広がるのでターゲットの位置を把握することが可能です。しかし、ターゲットが近接している場合、それらの応答は混合されます。

dt = 1.5*T;
lgs = t0:dt:tmax;
rpls = pulstran(tt,[lgs;ref*att.^-(lgs-t0)]',pls,fs);
rplsnoise = r + rpls;
[m,lg] = xcorr(rplsnoise,pls);
m = m(lg>=0);
tm = lg(lg>=0)/fs;

subplot(2,1,1)
plot(tt,r,t,pls,tt,rpls)
xticks(lgs)
legend('Noisy Received','Initial Pulse','Noiseless Received')
title('Transmitted/Received Signals')
ylabel('Magnitude (L.U.)')

subplot(2,1,2)
plot(tm,abs(m))
xticks(lgs)
title('Matched Filter Output')
xlabel('Time (s)')
ylabel('Magnitude (L.U.)')

Figure contains 2 axes objects. Axes object 1 with title Transmitted/Received Signals, ylabel Magnitude (L.U.) contains 3 objects of type line. These objects represent Noisy Received, Initial Pulse, Noiseless Received. Axes object 2 with title Matched Filter Output, xlabel Time (s), ylabel Magnitude (L.U.) contains an object of type line.

"範囲分解能" (密接したターゲットを検出する能力) を向上させるため、相互相関に線形周波数変調パルスを使用します。

線形周波数変調 (FM) チャープ

同じ手順を行いますが、今度は 0 Hz から開始して 10 Hz まで線形に増加する周波数による複素チャープを使用します。複素数値線形 FM 信号は、整合フィルター応答が大きく、かつ狭くなるので、実際のレーダー システムで範囲分解能を向上させるためによく使われます。チャープと整合フィルターに虚数部があるので、すべてのプロットは波形の実数部を使用して作られなければなりません。

pls = chirp(t,0,T,f0,'complex');
rpls = pulstran(tt,[lgs;ref*att.^-(lgs-t0)]',pls,fs);
r = randn(size(tt))*std(pls)/db2mag(SNR);
rplsnoise = r + rpls;

[m,lg] = xcorr(rplsnoise,pls);
m = m(lg>=0);
tm = lg(lg>=0)/fs;

subplot(2,1,1)
plot(tt,real(r),t,real(pls),tt,real(rpls))
xticks(lgs)
legend('Noisy Received','Initial Pulse','Noiseless Received')
title('Transmitted/Received Signals')
ylabel('Magnitude (L.U.)')

subplot(2,1,2)
plot(tm,abs(m))
xticks(lgs)
title('Matched Filter Output')
xlabel('Time (s)')
ylabel('Magnitude (L.U.)')

Figure contains 2 axes objects. Axes object 1 with title Transmitted/Received Signals, ylabel Magnitude (L.U.) contains 3 objects of type line. These objects represent Noisy Received, Initial Pulse, Noiseless Received. Axes object 2 with title Matched Filter Output, xlabel Time (s), ylabel Magnitude (L.U.) contains an object of type line.

線形 FM チャープによる相互相関は、ターゲットのエコーが近接していても、ターゲット ノイズに対する分解能が非常に高くなります。エコーのサイドローブも、矩形チャープに比べて大幅に減少するので、より正確なターゲット検出が可能になります。

周波数領域の畳み込み

相互相関は範囲分解能を向上させますが、このアルゴリズムはアナログ ハードウェア実装の場合のほうが効果的です。多くのレーダー システムは、"整合フィルター処理" と呼ばれる、デジタル領域での同様の処理を採用するようになっています。この処理では、受信信号に、送信パルスの時間反転バージョンで畳み込みが行われます。整合フィルター処理は周波数領域でよく行われます。これは、時間領域での畳み込みは、周波数領域での乗算に相当し、処理が高速になるためです。初回パルスは時間反転されているので、フィルター処理された出力にはパルス幅 T (1 秒) の遅延があります。

これを示すため、元の線形 FM パルスを時間反転してゼロでパディングし、パルスと送信波形が同じ長さになるようにします。時間反転したパルスとノイズのある信号の複素共役のフーリエ変換を計算してプロットします。周波数領域で 2 つのパルスを乗算し、その積をプロットします。

pls_rev = [fliplr(pls) zeros(1, length(r) - length(pls))];
PLS = fft(conj(pls_rev));
R = fft(rplsnoise);
fft_conv = PLS.*R;
faxis = linspace(-fs/2,fs/2,length(PLS));

clf
subplot(3,1,1)
plot(faxis,abs(fftshift(PLS)))
title('FFT of Time-Reversed Transmitted Pulse')
xlim([-100 100])
ylabel('Magnitude (L.U)')

subplot(3,1,2)
plot(faxis,abs(fftshift(R)))
title('FFT of Noisy Signal')
xlim([-100 100])
ylabel('Magnitude (L.U)')

subplot(3,1,3)
plot(faxis,abs(fftshift(fft_conv)))
title("FFT of Multiplied Signals")
xlabel('Frequency (Hz)')
xlim([-100 100])
ylabel('Magnitude (L.U)')

Figure contains 3 axes objects. Axes object 1 with title FFT of Time-Reversed Transmitted Pulse, ylabel Magnitude (L.U) contains an object of type line. Axes object 2 with title FFT of Noisy Signal, ylabel Magnitude (L.U) contains an object of type line. Axes object 3 with title FFT of Multiplied Signals, xlabel Frequency (Hz), ylabel Magnitude (L.U) contains an object of type line.

結果の信号を変換して時間領域に戻し、それをプロットします。

pls_prod = ifft(fft_conv);

clf
plot((0:length(pls_prod)-1)/fs,abs(pls_prod))
xticks(lgs+T)
xlabel('Time (s)')
ylabel('Magnitude (L.U.)')
title('Matched Filter Output')

Figure contains an axes object. The axes object with title Matched Filter Output, xlabel Time (s), ylabel Magnitude (L.U.) contains an object of type line.

ウィンドウを使用したサイドローブ削減

整合フィルター処理後のサイドローブを平滑化するため、時間反転の前に送信パルスにウィンドウを適用します。上記のセクションの手順は、周波数領域での整合フィルター処理プロセスをより明確に可視化するために示したものです。関数 fftfilt は、整合フィルター処理を関数にすばやく適用できます。

n = fftfilt(fliplr(conj(pls)),rplsnoise);
n_win = fftfilt(fliplr(conj(pls).*taylorwin(length(pls), 30)'),rplsnoise);

clf
plot(tt,abs(n),tt,abs(n_win))
xticks(lgs+T)
xlabel('Time (s)')
ylabel('Magnitude (L.U.)')
legend('No Window', 'Hamming Window')
title('Matched Filter Output')

Figure contains an axes object. The axes object with title Matched Filter Output, xlabel Time (s), ylabel Magnitude (L.U.) contains 2 objects of type line. These objects represent No Window, Hamming Window.

ドップラー偏位のあるターゲット

レーダー パルスが静止しているターゲットから反射している場合、パルスは変調されないので、送信波形を整合フィルター処理に使用したときに大きな応答が得られます。しかし、動いているターゲットはドップラー偏位を受けたパルスを反射するので、整合フィルター処理からの応答の強さは弱くなります。これに対する解決方法の 1 つが、ドップラー偏位を受けた波形に一連の整合フィルターを使用することです。これは、反射されたパルスのドップラー偏位の判定に使用できます。ドップラー偏位は速度に比例するので、レーダー システムはターゲットの速度を推定できます。

一連の整合フィルターを使用したドップラー処理を示すため、5 Hz のドップラー偏位を受けた応答を作成します。

pls = chirp(t,0,T,f0, 'complex');
shift = 5;
pls_shift = chirp(t,shift,T,f0+shift,'complex');
rpls_shift = pulstran(tt,[lgs;ref*att.^-(lgs-t0)]',pls_shift,fs);
r = (randn(size(tt)) + 1j*randn(size(tt)))*std(pls)/db2mag(SNR);
rplsnoise_shift = r + rpls_shift;

ドップラー偏位を受けた一連のパルスを作成し、整合フィルターごとに応答の違いを観察します。

filters = [];
for foffset = 0:4:10
    filters = [filters; chirp(t,0+foffset,T,f0+foffset,'complex')];
end

元のパルスと新しいパルスの周波数領域をプロットすると、新しいパルスが 5 Hz オフセットされていることがわかります。

clf
pspectrum([pls; pls_shift].',fs)
xlim([-100 100])

Figure contains an axes object. The axes object with title Fres = 2.5667 Hz, xlabel Frequency (Hz), ylabel Power Spectrum (dB) contains 2 objects of type line.

周波数をシフトしたパルスに各整合フィルターを適用し、出力をプロットします。

matched_pls = fftfilt(fliplr(conj(pls_shift)),rplsnoise_shift);
filt_bank_pulses = fftfilt(fliplr(filters)',rplsnoise_shift);

clf
subplot(2,1,1)
plot(tt,abs(matched_pls),'Color',[0.6350, 0.0780, 0.1840])
title('Matched Filter (5 Hz)')
ylabel('Magnitude (L.U.)')
xticks(lgs+T)
subplot(2,1,2)
plot(tt, abs(filt_bank_pulses))
legend("0 Hz", "4 Hz", "8 Hz")
title('Matched Filter Bank')
xlabel('Time (s)')
ylabel('Magnitude (L.U.)')

Figure contains 2 axes objects. Axes object 1 with title Matched Filter (5 Hz), ylabel Magnitude (L.U.) contains an object of type line. Axes object 2 with title Matched Filter Bank, xlabel Time (s), ylabel Magnitude (L.U.) contains 3 objects of type line. These objects represent 0 Hz, 4 Hz, 8 Hz.

3 つすべての出力を含むプロットを見ると、4 Hz シフトされた整合フィルターが最も大きな応答をもっていることがわかります。この場合、レーダー システムはドップラー偏位を 4 Hz 付近に近似します。周波数シフト区間を小さくしたドップラー フィルターをさらに多く使用することで、ドップラーの分解能を向上させることができます。

ドップラー処理のこの手法は、多数のフィルターを適用すると遅くなる特性があるため、あまり使われません。レーダー出力に対する信号処理の多くは、データ キューブによって行われます。キューブの 3 次元は、ファスト タイム サンプル (パルス内の範囲応答)、配列要素の数、スロー タイム サンプル (パルスの数) です。システムがオブジェクトの範囲を判定した後、スロー タイムの次元に対してフーリエ変換が行われ、ターゲットのドップラーが判定されます。今回の設定の場合、システムは 1 つのパルスのみ送信するため、データ キューブの手法は最適なドップラー処理とは言えません。データ キューブの手法は、パルスが大量にあるときに最も効果的に機能します。このために、多くのレーダー システムは範囲ドップラー処理に、単一のパルスではなく、"パルス列" (一連のパルス) を使用しています。

参考

| | |