ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。このページの最新版は英語でご覧になれます。

開始時間が異なる信号の整列

実測では、複数のセンサーによって非同期に収集されたデータを含む場合が往々にしてあります。信号を積分するには、信号を同期しなければなりません。Signal Processing Toolbox™ には、そのための関数があります。

たとえば、橋を渡る自動車を考えます。自動車の振動は、異なる点に置かれた 3 つの同じセンサーで測定されます。信号の到来時間はさまざまです。

信号を MATLAB® ワークスペースに読み込み、プロットします。

loadrelatedsigax(1) = subplot(3,1,1); plot(s1) ylabel('s_1') ax(2) = subplot(3,1,2); plot(s2) ylabel('s_2') ax(3) =情节(3、1,3);巴解组织t(s3) ylabel('s_3') xlabel('Samples') linkaxes(ax,'x')

信号s1s2からは遅れ、s3に対しては先行しています。finddelayを使用すると、この遅延を正確に計算できます。s2s1より 350 サンプル進み、s3s1より 150 サンプル遅れ、s2s3より 500 サンプル進んでいることがわかります。

t21 = finddelay(s2,s1) t31 = finddelay(s3,s1) t32 = finddelay(s2,s3)
t21 = 350 t31 = -150 t32 = 500

進んだ信号はそのままにし、他のベクトルから遅延を取り除いて信号を整列させます。MATLAB® で使用される 1 ベースのインデックスを考慮して、ラグ差には 1 を追加します。この方法は、s2による最も早い到着時間を基準として使用し、信号を整列させます。

axes(ax(1)) plot(s1(t21+1:end)) axes(ax(2)) plot(s2) axes(ax(3)) plot(s3(t32+1:end))

alignsignalsを使用して信号を整列させます。この関数は、先行する信号を遅らせることで機能するため、s3による最も遅い到着時間を基準として使用します。

[x1,x3] = alignsignals(s1,s3); x2 = alignsignals(s2,s3); axes(ax(1)) plot(x1) axes(ax(2)) plot(x2) axes(ax(3)) plot(x3)

これで信号が同期され、次の処理に進む準備ができました。

参考

||

関連するトピック