Main Content

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

alignsignals

最初の信号の遅延による 2 つの信号の整列

説明

[xa,ya] = alignsignals(x,y) は、2 つの入力信号 xy との間の遅延 D を推定し、整列された信号 xa および ya を返します。この関数は、相互相関を使用して遅延を推定します。

  • yx に対して遅延した場合、D は正になり、xD 個のサンプル分だけ遅延します。

  • yx に対して先行した場合は D は負になり、y は –D 個のサンプル分だけ遅延します。

入力信号は遅延された互いの正確なコピーである必要はありません。ただし、これらの信号を正確に揃えることができるのは、信号間に相関性が十分にある場合のみです。共分散および相関の推定の詳細については、[1]を参照してください。

[xa,ya] = alignsignals(x,y,Name=Value) は、推定法と入力信号を切り捨てるオプションを含む 1 つ以上の名前と値の引数を使用してオプションを指定します。たとえば、各信号の最大ピークの位置に基づいて遅延を推定する場合は、Method"maxpeak" に設定します。

[xa,ya,D] = alignsignals(___) は、推定遅延 D を返します。前の入力構文のいずれも使用できます。

すべて折りたたむ

2 つの信号 XY を作成します。XY と同じ信号ですが、X には先行する 3 つのゼロと後にさらに 1 つのゼロが追加されています。2 つの信号を揃えます。

X = [0 0 0 1 2 3 0 0];
Y = [1 2 3 0];

[Xa,Ya] = alignsignals(X,Y)
Xa = 1×8

     0     0     0     1     2     3     0     0

Ya = 1×7

     0     0     0     1     2     3     0

2 つの信号 XY を作成します。YX と同じ信号ですが、Y は 2 個のサンプル分遅れます。2 つの信号を揃えます。

X = [1 2 3];
Y = [0 0 1 2 3];

[Xa,Ya,D] = alignsignals(X,Y)
Xa = 1×5

     0     0     1     2     3

Ya = 1×5

     0     0     1     2     3

D = 2

最大ウィンドウ サイズ 1 を使用して信号を揃えます。

maxlag = 1;

[Xa,Ya,D] = alignsignals(X,Y,Method="xcorr",MaxLag=maxlag)
Xa = 1×4

     0     1     2     3

Ya = 1×5

     0     0     1     2     3

D = 1

2 値波形を表す 2 つの信号を生成します。信号は、50 Hz で 20 秒間サンプリングされます。最初の信号では、測定開始から 13 秒で遷移が発生します。2 番目の信号では、測定開始から 5 秒で遷移が発生します。これらの信号は異なる振幅をもち、分散が異なるホワイト ガウス ノイズに組み込まれます。信号をプロットします。

t = linspace(0,20,1001)';
e1 = 1.4*tanh(t-13)+randn(size(t))/3;
e2 = tanh(3*(t-5))+randn(size(t))/5;

plot(t,e1,t,e2)
xlabel("Seconds")
ylabel("Amplitude")

Figure contains an axes object. The axes object with xlabel Seconds, ylabel Amplitude contains 2 objects of type line.

遷移時間が一致するように信号を揃えます。相関ベースの方法では、この種の信号を適切に揃えることができません。

[y1,y2] = alignsignals(e1,e2);

plot(y1)
xlabel("Samples")
ylabel("Amplitude")
hold on
plot(y2)
hold off

Figure contains an axes object. The axes object with xlabel Samples, ylabel Amplitude contains 2 objects of type line.

risetime メソッドを使用して信号を揃えます。

[y1,y2] = alignsignals(e1,e2,Method="risetime");

plot(y1)
xlabel("Samples")
ylabel("Amplitude")
hold on
plot(y2)
hold off

Figure contains an axes object. The axes object with xlabel Samples, ylabel Amplitude contains 2 objects of type line.

2 つの信号 XY を作成します。YX と同じ信号ですが、Y には先頭にゼロが 2 つ付きます。2 つの信号を揃えて、Truncate オプションを true に設定します。このオプションは X の長さを保持します。

X = [1 2 3];
Y = [0 0 1 2 3];

[Xa,Ya,D] = alignsignals(X,Y,Truncate=true)
Xa = 1×3

     0     0     1

Ya = 1×5

     0     0     1     2     3

D = 2

Truncate オプションにより X の元のデータがすべて切り捨てられた場合、関数が警告を表示します。

Y = [0 0 0 0 1 2 3];

[Xa,Ya,D] = alignsignals(X,Y,Truncate=true)
Warning: All original data in the first input X has been truncated because the length of X is smaller than the estimated delay D. To avoid truncating this data do not use the "truncate" option.
Xa = 1×3

     0     0     0

Ya = 1×7

     0     0     0     0     1     2     3

D = 4

入力引数

すべて折りたたむ

長さ Lx の数値ベクトルとして指定される最初の入力信号。

例: [1 2 3]

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
複素数のサポート: あり

長さ Ly の数値ベクトルとして指定される 2 番目の入力信号。

例: [0 0 1 2 3]

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
複素数のサポート: あり

名前と値の引数

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。

例: alignsignals(X,Y,Method="npeak",PeakNum=4) は、各信号の 4 番目のピークの位置に基づいて、XY を揃えます。

信号間の遅延を推定するメソッド。"xcorr""maxpeak""npeak"、または "risetime" として指定します。指定した Method に基づいて、追加の名前と値のペアの引数を指定できます。

  • "xcorr" — 相互相関を使用して遅延を推定します。Method"xcorr" として指定した場合は、MaxLag も指定できます。

  • "maxpeak" — 各信号の最も高いピークの位置を使用して遅延を推定します。Method"maxpeak" として指定した場合、オプションで MinPeakProminenceMinPeakHeight を指定できます。

  • "npeak" — 各信号の n 番目のピークの位置を使用して遅延を推定します。Method"npeak" として指定した場合、オプションで PeakNumMinPeakProminence、および MinPeakHeight を指定できます。

  • "risetime" — 各信号の立ち上がりエッジの位置を使用して遅延を推定します。この関数は、指定された StateLevels の値を使用して立ち上がりエッジを検出します。

例: Method="npeak",PeakNum=3

信号間の遅延を推定するために使用する最大ウィンドウサイズ。整数スカラーとして指定します。既定では、MaxLagmax(Lx,Ly)–1 と等しくなります。ここで、Lxx の長さ、Lyy の長さです。MaxLag が負の場合、関数は絶対値を使用します。

この引数は、Method"xcorr" に設定されている場合にのみ適用されます。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

信号の整列に使用するピークの番号。正の整数として指定します。この引数は、Method"npeak" として指定した場合にのみ適用されます。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

信号のピークの特定に使用される最小ピークのプロミネンス。非負の実数スカラーとして指定します。MinPeakProminence を指定した場合、この関数は、指定された値以上の相対的な重要性を持つピークを検出します。詳細については、findpeaksプロミネンスを参照してください。

この引数は、Method"npeak" または "maxpeak" として指定した場合にのみ適用されます。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

信号内のピークの特定に使用されるピーク高の最小値。実数スカラーとして指定します。MinPeakHeight を指定した場合、この関数は、指定された値よりも高いピークを検出します。詳細については、findpeaks を参照してください。

この引数は、Method"npeak" または "maxpeak" として指定した場合にのみ適用されます。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

状態レベル。2 要素の実数値行ベクトルとして指定します。最初の要素は入力信号の Low の状態レベルに対応し、2 番目の要素は入力信号の High の状態レベルに対応します。StateLevels を指定しない場合、この関数はヒストグラム法により、入力波形の状態レベルを推定します。詳細については、risetime を参照してください。

この引数は、Method"risetime" として指定した場合にのみ適用されます。

例: Method="risetime",StateLevels=[0.5 2]

データ型: double

入力信号を切り捨てるオプション。数値または論理値 1 (true) または 0 (false) として指定します。Truncatetrue として指定した場合、xa および ya の長さは、それぞれ x および y の長さと等しくなります。

  • 推定遅延 D が正の場合、この関数は x の先頭に D 個のゼロを追加し、x の最後の D 個のサンプルを切り捨てます。

  • D が負の場合、この関数は y の先頭に -D 個のゼロを追加し、y の最後の D 個のサンプルを切り捨てます。

  • D ≥ Lx の場合、xa は Lx 個のゼロで構成され、x のサンプルはすべて失われます。-D が Ly 以上の場合、ya は Ly 個のゼロで構成され、y のサンプルはすべて失われます。

出力引数

すべて折りたたむ

2 番目の出力引数 ya に揃えられた数値ベクトルとして返される、整列された最初の信号。

  • 入力引数 x が行ベクトルの場合、xa も行ベクトルです。

  • 入力引数 x が列ベクトルの場合、xa も列ベクトルです。

Truncatetrue として指定し、推定遅延 D が正の場合、xa は、先頭に D 個のゼロが追加され、最後の D 個のサンプルが切り捨てられた入力信号 x と等価です。

最初の出力引数 Xa に揃えられた数値ベクトルとして返される、整列された 2 番目の信号。

  • 入力引数 y が行ベクトルの場合、ya も行ベクトルです。

  • 入力引数 y が列ベクトルの場合、ya も列ベクトルです。

Truncatetrue として指定し、推定遅延 D が負の場合、ya は、先頭に –D 個のゼロが追加され、最後の –D 個のサンプルが切り捨てられた入力信号 y と等価です。

入力信号間の推定遅延。整数として返されます。この整数は、2 つの入力信号 xy のオフセットを示す、サンプルの個数を表します。

  • yx に対して遅延した場合、D は正になり、xD 個のサンプル分だけ遅延します。

  • yx に対して先行した場合は D は負になり、y は –D 個のサンプル分だけ遅延します。

  • xy が既に整列されている場合は D はゼロになり、xy のいずれも遅延しません。

入力引数 MaxLag の値を指定する場合、DMaxLag 以下です。

参照

[1] Orfanidis, Sophocles J. Optimum Signal Processing. An Introduction. 2nd Ed. Englewood Cliffs, NJ: Prentice-Hall, 1996.

拡張機能

C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。

バージョン履歴

R2019a で導入

すべて展開する