3

相互相関は、既知の広帯域信号を送信し、送信された信号をレーダー受信アンテナを介して受信した着信信号と相関させることにより、航空機までの距離を測定するために使用されます。

送信信号 x(n) の長さは N=512 で、受信信号 y(n) の長さは N=2048 です。

y(n)=kx(nd)+w(n); ここで、'kx(nd)' は x(n) を d サンプルだけ遅延させ、係数 k で減衰させたもので、w(n) は受信ノイズです。

x(n) を y(n) と相互相関させて、サンプル遅延の数である d の値を決定する MATLAB プログラムを作成しようとしています。また、送受信データが光速で移動することを前提として、航空機までの距離が 50 km 以内で 50 m の精度で決定される場合、適切なサンプリング周波数を決定します。

4

4 に答える 4

4

これを行う最も簡単な方法は、「xcorr」関数を使用することです。これは matlab の信号処理ツールボックスの一部ですが、GNU Octave ではこちらで利用できるはずです。オクターブ スクリプトが MATLAB と完全に互換性があるかどうかは確認していません。

xcorr 関数は次のように使用できます。

[correlation,lags] = xcorr(x,y);

ラグ値は、次を使用して見つけることができます

delay = lags(find(correlation==max(correlation)))

光の速度では、信号は 3 x 10^8 m/s で移動するため、50m の分解能を得るには、少なくとも (3e8/50m) = 6MHz でサンプリングする必要があります。このサンプリング レートでは、各ラグは 1/6000000 秒になります。遅延にこの値を掛けると、信号の送信と受信の間の合計時間間隔が得られます。この時間間隔に光速を掛けて距離を求めます。

于 2011-10-17T01:25:08.510 に答える
3

matlabの「find」関数は無視できます。コマンドを次のように変更できます。

delay = lags(correlation==max(correlation))

'xcorr'は、長さが長いベクトルに適しています。
'gcc'はフレームごとに優先します。

于 2012-11-08T05:45:29.457 に答える
3

一般化された相互相関を使用できます - 位相変換 GCC PHAT 以下はそのための MATLAB コードです

function time=GCCPHAT_testmode(b1,b2)

b1f=fft(b1);

b2f=fft(b2);

b2fc=conj(b2f);

neuma=(b1f).*(b2fc);

deno=abs((b1f).*(b2fc));

GPHAT=neuma./deno;

GPHATi=ifft(GPHAT);

[maxval ind]= max(GPHATi);

samp=ind

end
于 2011-11-02T22:00:50.030 に答える