このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
alignsignals
最初の信号の遅延による 2 つの信号の整列
説明
[
は、2 つの入力信号 xa
,ya
] = alignsignals(x
,y
)x
と y
との間の遅延 D
を推定し、整列された信号 xa
および ya
を返します。この関数は、相互相関を使用して遅延を推定します。
y
がx
に対して遅延した場合、D
は正になり、x
はD
個のサンプル分だけ遅延します。y
がx
に対して先行した場合はD
は負になり、y
は –D
個のサンプル分だけ遅延します。
入力信号は遅延された互いの正確なコピーである必要はありません。ただし、これらの信号を正確に揃えることができるのは、信号間に相関性が十分にある場合のみです。共分散および相関の推定の詳細については、[1]を参照してください。
例
最初の信号が 3 個のサンプル分遅れる 2 つの信号の整列
2 つの信号 X
と Y
を作成します。X
は Y
と同じ信号ですが、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 番目の信号が 2 個のサンプル分遅れる 2 つの信号の整列
2 つの信号 X
と Y
を作成します。Y
は X
と同じ信号ですが、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 値波形の整列
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")
遷移時間が一致するように信号を揃えます。相関ベースの方法では、この種の信号を適切に揃えることができません。
[y1,y2] = alignsignals(e1,e2); plot(y1) xlabel("Samples") ylabel("Amplitude") hold on plot(y2) hold off
risetime
メソッドを使用して信号を揃えます。
[y1,y2] = alignsignals(e1,e2,Method="risetime"); plot(y1) xlabel("Samples") ylabel("Amplitude") hold on plot(y2) hold off
Truncate オプションを使用した 2 つの信号の整列
2 つの信号 X
と Y
を作成します。Y
は X
と同じ信号ですが、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
入力引数
x
— 最初の入力信号
ベクトル
長さ Lx の数値ベクトルとして指定される最初の入力信号。
例: [1 2 3]
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
複素数のサポート: あり
y
— 2 番目の入力信号
ベクトル
長さ 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 番目のピークの位置に基づいて、X
と Y
を揃えます。
Method
— 信号間の遅延を推定するメソッド
"xcorr"
(既定値) | "maxpeak"
| "npeak"
| "risetime"
信号間の遅延を推定するメソッド。"xcorr"
、"maxpeak"
、"npeak"
、または "risetime"
として指定します。指定した Method
に基づいて、追加の名前と値のペアの引数を指定できます。
"xcorr"
— 相互相関を使用して遅延を推定します。Method
を"xcorr"
として指定した場合は、MaxLag
も指定できます。"maxpeak"
— 各信号の最も高いピークの位置を使用して遅延を推定します。Method
を"maxpeak"
として指定した場合、オプションでMinPeakProminence
とMinPeakHeight
を指定できます。"npeak"
— 各信号の n 番目のピークの位置を使用して遅延を推定します。Method
を"npeak"
として指定した場合、オプションでPeakNum
、MinPeakProminence
、およびMinPeakHeight
を指定できます。"risetime"
— 各信号の立ち上がりエッジの位置を使用して遅延を推定します。この関数は、指定されたStateLevels
の値を使用して立ち上がりエッジを検出します。
例: Method="npeak",PeakNum=3
PeakNum
— ピークの番号
1
(既定値) | 正の整数
信号の整列に使用するピークの番号。正の整数として指定します。この引数は、Method
を "npeak"
として指定した場合にのみ適用されます。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
MinPeakProminence
— 最小ピークのプロミネンス
0
(既定値) | 非負の実数スカラー
MinPeakHeight
— ピーク高の最小値
–Inf
(既定値) | 実数スカラー
Truncate
— 入力信号を切り捨てるオプション
false
または 0
(既定値) | true
または 1
入力信号を切り捨てるオプション。数値または論理値 1
(true
) または 0
(false
) として指定します。Truncate
を true
として指定した場合、xa
および ya
の長さは、それぞれ x
および y
の長さと等しくなります。
推定遅延
D
が正の場合、この関数はx
の先頭にD
個のゼロを追加し、x
の最後のD
個のサンプルを切り捨てます。D
が負の場合、この関数はy
の先頭に -D
個のゼロを追加し、y
の最後のD
個のサンプルを切り捨てます。D
≥ Lx の場合、xa
は Lx 個のゼロで構成され、x
のサンプルはすべて失われます。-D
が Ly 以上の場合、ya
は Ly 個のゼロで構成され、y
のサンプルはすべて失われます。
出力引数
参照
[1] Orfanidis, Sophocles J. Optimum Signal Processing. An Introduction. 2nd Ed. Englewood Cliffs, NJ: Prentice-Hall, 1996.
拡張機能
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
バージョン履歴
R2019a で導入R2022b: 削除予定の構文
以下の構文は将来のリリースで削除される予定です。
構文 | 結果 | 代わりに使用するもの |
---|---|---|
alignsignals(x,y,maxlag) | 実行 | alignsignals(x,y,Method="xcorr",MaxLag=maxlag) |
alignsignals(x,y,maxlag,'truncate') | 実行 | alignsignals(x,y,Method="xcorr",MaxLag=maxlag,Truncate=true) |
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)