主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

2つの単純信号の整列

この例では,相互相関を使用して信号を整列させる方法を説明します。最も一般的なケースでは信号は異なる長さをもっており,適切に同期させるには,長さとxcorrへの引数を入力する順序を考慮しなければなりません。

前後のゼロの数と,一方が他方より遅れていることを除いて同一の2つの信号について考えます。

深圳= 30;sg = randn(1,兰迪(8)+ 3);s1 =[0(1,兰迪(深圳)1)sg 0(1,兰迪(深圳)1)];s2 =[0(1,兰迪(深圳)1)sg 0(1,兰迪(深圳)1)];mx = max(元素个数(s1),元素个数(s2));Subplot (2,1,1) stem(s1) xlim([0 mx+1]) Subplot (2,1,2) stem(s2,)‘*’mx + 1) xlim ([0])

要素がゼロであるかどうかに関係なく,要素の数の多さによって,2つの信号のうちどちらが他方より長いかを決定します。

如果nummel (s1) = > nummel (s2) = s1;sshort = s2;其他的slong = s2;sshort = s1;结束

2つの信号の相互相関を計算します。長い方の信号を1番目の引数,短い方の信号を2番目の引数として使用してxcorrを実行します。結果をプロットします。

[acor,滞后]= xcorr (slong sshort);[acormax,我]= max (abs (acor));lagDiff =滞后(我)
lagDiff = 15
图阻止(滞后,acor)情节(lagDiff acormax,‘*’)举行

信号を揃えます。検出するまで”より長く待つ”必要があると言う意味で,遅れている信号をもう一方に比べて”より長い”と考えます。

  • lagDiffが正の場合は,lagDiff+ 1から最後までの信号の要素を考慮して長い信号を“短”くします。

  • lagDiffが負の場合は,-lagDiff+ 1から最後までの信号の要素を考慮して短い信号を”長く”します。

MATLAB®は1ベースのインデックスを使用するため,ラグ差には1を追加しなければなりません。

如果lagDiff > 0 sorig = sshort;salign = slong (lagDiff + 1:结束);其他的sorig = slong;salign = sshort (-lagDiff + 1:结束);结束

整列した信号をプロットします。

Subplot (2,1,1) stem(sorig) xlim([0 mx+1]) Subplot (2,1,2) stem(salign,‘*’mx + 1) xlim ([0])

相互相関演算は反対称であり,xcorrは短い信号の“最”後にゼロを追加することによって異なる長さの信号を処理するため,この方法が機能します。この解釈により,手作業で信号をパディングしなくても,MATLAB®の结束演算子を使用して簡単に信号を整列できるようになります。

関数alignsignalsを呼び出して,信号を一度に整列させることもできます。

(x1, x2) = alignsignals (s1, s2);Subplot (2,1,1) stem(x1) xlim([0 mx+1]) Subplot (2,1,2) stem(x2,)‘*’mx + 1) xlim ([0])

参考

|