ドキュメンテーション

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

alignsignals

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

構文

[Xa,Ya] = alignsignals(X,Y)
[Xa,Ya] = alignsignals(X,Y,maxlag)
[Xa,Ya] = alignsignals(X,Y,maxlag,'truncate')
[Xa,Ya,D] = alignsignals(___)

説明

[Xa,Ya] = alignsignals(X,Y) は、2 つの入力信号 XY との間の遅延 D を推定し、整列された信号 Xa および Ya を返します。

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

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

ゼロを先頭に付加することで X または Y の遅延を発生させることができます。

[Xa,Ya] = alignsignals(X,Y,maxlag)maxlag を最大ウィンドウ サイズとして使用し、2 つの入力信号 XY との間の推定遅延 D を求めます。また、整列された信号 XaYa を返します。

[Xa,Ya] = alignsignals(X,Y,maxlag,'truncate') は、整列された信号 XaYa の長さをそれぞれ入力信号 XY の長さと同じに保ちます。

  • 推定遅延 D が正の場合、X の先頭に D 個のゼロが追加され、X の最後の D 個のサンプルは切り捨てられます。

  • 推定遅延 D が負の場合、Y の先頭に –D 個のゼロが追加され、Y の最後の –D 個のサンプルは切り捨てられます。

メモ:

X および Y は、それぞれ長さ LX と LY の行ベクトルまたは列ベクトルです。

  • D ≥ LX の場合、Xa は LX 個のゼロで構成されます。X のサンプルはすべて失われます。

  • -D ≥ LY の場合、Ya は LY 個のゼロで構成されます。Y のサンプルはすべて失われます。

'truncate' オプション使用時に特定の値が maxlag に代入されるのを回避するには、maxlag[] に設定します。

[Xa,Ya,D] = alignsignals(___) は、推定遅延 D を返します。この構文には、前の構文で使用した任意の入力引数を含めることができます。

すべて折りたたむ

信号 YX に対して 3 個のサンプル分先行させて揃えます。

2 つの信号 XY を作成します。X は先行する 3 つのゼロと後にさらに 1 つのゼロが追加されている以外は Y と同じ信号です。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

YX に対して 2 個のサンプル分遅延する場合、信号 X を揃えます。

2 つの信号 XY を作成します。Y は先頭にゼロが 2 つ付く以外は X と同じ信号です。2 つの信号を揃えます。

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

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

     0     0     1     2     3

Ya = 1×5

     0     0     1     2     3

D = 2

信号 YX に揃えます。ここで、Y はノイズを含む信号とします。

2 つの信号 XY を作成します。Y にはノイズを追加しますが、それ以外は X と同じにします。2 つの信号を揃えます。

X = [0 0 1 2 3 0];
Y = [0.02 0.12 1.08 2.21 2.95 -0.09];

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

     0     0     1     2     3     0

Ya = 1×6

    0.0200    0.1200    1.0800    2.2100    2.9500   -0.0900

D = 0

出力信号が生成されるように入力信号を変更する必要はありません。遅延 D はゼロです。

関数 alignsignals を呼び出すときに 'truncate' オプションを起動します。

2 つの信号 XY を作成します。Y は先頭にゼロが 2 つ付く以外は X と同じ信号です。2 つの信号を揃えて、'truncate' 命令を適用します。

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

[Xa,Ya,D] = alignsignals(X,Y,[],'truncate')
Xa = 1×3

     0     0     1

Ya = 1×5

     0     0     1     2     3

D = 2

出力信号 Xa の長さが、入力信号 X と同じ長さの 3 であることを観測します。

'truncate' オプションを使用したために X の元のデータがすべて切り捨てられた場合、警告が表示されます。このような警告を alignsignals で表示させるには、次の例を実行します。

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

[Xa,Ya,D] = alignsignals(X,Y,[],'truncate')
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

信号 YX に揃えます。ここで、YX の周期的反復とします。最小遅延を返します。

2 つの信号 X および Y を作成します。Y は、ゼロで区切られた X の非ゼロ部分 2 つで構成されています。2 つの信号を揃えます。

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

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

     0     1     2     3

Ya = 1×13

     0     1     2     3     0     0     0     0     1     2     3     0     0

D = -1

入力引数

すべて折りたたむ

長さ 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
複素数のサポート: あり

整数値スカラーとして指定される最大ウィンドウ サイズまたは遅れ。既定の設定では、maxlagmax(length(X),length(Y))-1 と等価です。maxlag[] として入力されると、既定値で置換されます。maxlag が負の場合は、絶対値で置換されます。maxlag が整数値でない場合、複素数である場合、あるいは Inf または NaN である場合、alignsignals はエラーを返します。

例: 2

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

出力引数

すべて折りたたむ

2 番目の出力引数 Ya に揃えられた数値ベクトルとして返される、整列された最初の信号。入力引数 X が行ベクトルの場合、Xa も行ベクトルです。入力引数 X が列ベクトルの場合、Xa も列ベクトルです。'truncate' オプションを指定し、推定遅延 D が正の場合、Xa は、先頭に D 個のゼロが追加され最後の D 個のサンプルが切り捨てられた入力信号 X と等価です。

最初の出力引数 Xa に揃えられた数値ベクトルとして返される、整列された 2 番目の信号。入力引数 Y が行ベクトルの場合、Ya も行ベクトルです。入力引数 Y が列ベクトルの場合、Ya も列ベクトルです。'truncate' オプションを指定し、推定遅延 D が負の場合、Ya は、先頭に –D 個のゼロが追加され最後の –D 個のサンプルが切り捨てられた入力信号 Y と等価です。

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

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

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

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

入力引数 maxlag の値を指定する場合、Dmaxlag 以下でなければなりません。

アルゴリズム

  • 遅延推定に関する理論は、関数 finddelay の仕様に記されています (アルゴリズムを参照してください)。

  • 関数 alignsignals は推定遅延 D を使用して、2 つの信号の始点が同じになるように先頭にある信号を遅延させます。

  • 関数 finddelay に対して指定されているとおり、信号のペアは遅延された互いの正確なコピーである必要はありません。ただし、これらの信号を正しく揃えることができるのは、信号間に相関性が十分にある場合のみです。

共分散および相関関数の推定の詳細は、[1] を参照してください。

参照

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

拡張機能

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