Main Content

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

undershoot

2 値波形遷移のアンダーシュート計量

説明

us = undershoot(x) は、入力 2 値波形の状態レベルの差のパーセント比として表されるアンダーシュートを返します。us の値は、各遷移の最終状態レベルを下回る最大偏差に対応します。

us = undershoot(x,fs) では、サンプル レート fs を Hz で指定します。

us = undershoot(x,t) では、サンプル瞬時 t を指定します。

[us,uslev,usinst] = undershoot(___) は各遷移について、アンダーシュートのレベル uslev とサンプル瞬時 usinst を返します。前の構文の入力を任意に組み合わせて指定します。

[___] = undershoot(___,Name,Value) は、1 つ以上の名前と値の引数を使用して追加のオプションを指定します。

undershoot(___) は 2 値波形をプロットし、各遷移のアンダーシュートの位置を示します。また、この関数は、下位および上位の基準レベル瞬時とそれに関連する基準レベル、および状態レベルとそれに関連する状態の上下限をプロットします。

すべて折りたたむ

2.3 V クロック波形における、High 状態レベルに対する最大アンダーシュート率を決定します。

2.3 V クロックのデータを読み込みます。遷移の最大アンダーシュート率を決定します。アンダーシュートのレベルおよびサンプル瞬時も決定します。この例では、遷移後の領域における最大のアンダーシュートはインデックス 23 付近で発生します。

load('transitionex.mat','x')

[uu,lv,nst] = undershoot(x)
uu = 4.5012
lv = 2.1826
nst = 23

波形をプロットします。オーバーシュートおよび対応するサンプル瞬時に注釈を付けます。

undershoot(x);

ax = gca;
ax.XTick = sort([ax.XTick nst]);

Figure Undershoot Plot contains an axes object. The axes object with xlabel Time (seconds), ylabel Level (Volts) contains 12 objects of type line. One or more of the lines displays its values using only markers These objects represent signal, upper cross, lower cross, post-undershoot, upper boundary, upper state, lower boundary, upper reference, lower reference, lower state.

2.3 V クロック波形において、High 状態レベルに対する最大アンダーシュート率、アンダーシュートのレベルおよびサンプル瞬時を決定します。

2.3 V クロックのデータをサンプリング瞬時と共に読み込みます。クロック データは 4 MHz でサンプリングされています。

load('transitionex.mat','x','t')

最大のアンダーシュートが発生する位置で、最大アンダーシュート率、ボルト単位でのアンダーシュートのレベルおよび時点を決定します。結果をプロットします。

[us,uslev,usinst] = undershoot(x,t)
us = 4.5012
uslev = 2.1826
usinst = 5.5000e-06
undershoot(x,t);

Figure Undershoot Plot contains an axes object. The axes object with xlabel Time (seconds), ylabel Level (Volts) contains 12 objects of type line. One or more of the lines displays its values using only markers These objects represent signal, upper cross, lower cross, post-undershoot, upper boundary, upper state, lower boundary, upper reference, lower reference, lower state.

2.3 V クロック波形において、Low 状態レベルに対する最大アンダーシュート率、アンダーシュートのレベルおよびサンプル瞬時を決定します。'Region''Preshoot' に指定して遷移前の計量を出力します。

2.3 V クロックのデータをサンプリング瞬時と共に読み込みます。クロック データは 4 MHz でサンプリングされています。

load('transitionex.mat','x','t')

最大のアンダーシュートが発生する位置で、最大アンダーシュート率、ボルト単位でのアンダーシュートのレベルおよびサンプリング瞬時を決定します。結果をプロットします。

[us,uslev,usinst] = undershoot(x,t,'Region','Preshoot')
us = 6.1798
uslev = -0.1500
usinst = 5.0000e-06
undershoot(x,t,'Region','Preshoot');

Figure Undershoot Plot contains an axes object. The axes object with xlabel Time (seconds), ylabel Level (Volts) contains 12 objects of type line. One or more of the lines displays its values using only markers These objects represent signal, upper cross, lower cross, pre-undershoot, upper boundary, upper state, lower boundary, upper reference, lower reference, lower state.

入力引数

すべて折りたたむ

2 値波形。実数値の行または列ベクトルとして指定します。X のサンプル瞬時は、ベクトルのインデックスに対応します。x の最初のサンプル瞬時は t = 0 に対応します。

サンプル レート (ヘルツ単位)。実数の正のスカラーとして指定します。サンプル レートは、x の要素に対応するサンプル瞬時を決定します。

サンプル瞬時。ベクトルとして指定します。t の長さは、入力 2 値波形 x の長さと等しくなければなりません。

名前と値の引数

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

R2021a より前では、コンマを使用して名前と値をそれぞれ区切り、Name を引用符で囲みます。

例: 'Tolerance',5 は、5% の許容誤差領域でアンダーシュートを計算します。

波形振幅のパーセント比で表した基準レベル。1 行 2 列の実数値ベクトルとして指定します。この関数は、Low 状態レベルを 0% として定義し、High 状態レベルを 100% として定義します。最初の要素は下位パーセント基準レベルに対応し、2 番目の要素は上位パーセント基準レベルに対応します。

アンダーシュートを計算する逸脱領域。'Preshoot' または 'Postshoot' で指定します。'Preshoot' を指定する場合、この関数は遷移前の逸脱領域の終了を、信号が最初の状態から抜け出る際の最終時点として定義します。'Postshoot' を指定する場合、この関数は遷移後の逸脱領域の開始を、信号が 2 番目の状態に入る時点として定義します。既定では、この関数はアンダーシュートを遷移後の逸脱領域について計算します。

逸脱領域の継続時間。実数値スカラーとして指定します。この関数は、各遷移の指定した継続時間のアンダーシュートを、対応する遷移の継続時間の倍数として計算します。逸脱領域の継続時間が経過する前に波形のエッジに到達した場合、あるいは完全な遷移の介在が検出された場合、継続時間は波形のエッジまたは介在する遷移の開始で打ち切られます。

Low 状態レベルおよび High 状態レベル。1 行 2 列の実数値ベクトルとして指定します。最初の要素は入力波形の Low 状態レベルに対応し、2 番目の要素は High 状態レベルに対応します。

許容誤差レベル。実数値スカラーとして指定します。この関数は、許容誤差を High と Low の状態レベル間の差のパーセント比として表します。各遷移の初期レベルと最終レベルは、それぞれの状態レベル内でなければなりません。

出力引数

すべて折りたたむ

状態レベル間の差のパーセント比として表されるアンダーシュート。ベクトルとして返されます。us の長さは入力信号で検出された遷移の数に対応します。詳細については、アンダーシュートを参照してください。

アンダーシュート レベル。列ベクトルとして返されます。

遷移前または遷移後のアンダーシュートのサンプル瞬時。列ベクトルとして返されます。fs または t を指定すると、アンダーシュート瞬時の単位は秒となります。fs または t を指定しない場合、アンダーシュート瞬時は入力ベクトルのインデックスとなります。

詳細

すべて折りたたむ

状態レベルの推定

遷移を判定するため、関数 undershoot はヒストグラム法により、次の手順で入力 2 値波形 x の状態レベルを推定します。

  1. データの最小および最大振幅を決定します。

  2. 指定したヒストグラムのビンの数について、ビン幅を決定します。これは、ビン数に対する振幅範囲の比です。

  3. データ値をヒストグラムのビンに振り分けます。

  4. カウントが非ゼロの最小および最大インデックスのヒストグラム ビンを特定します。

  5. ヒストグラムを 2 つのサブヒストグラムに分割します。

  6. 上位および下位ヒストグラムのモードまたは平均を決定して状態レベルを計算します。

この関数は、Low 状態の上限と High 状態の下限を横断するすべての領域を識別します。Low 状態と High 状態の上下限は、状態レベル +/- 状態レベル間の差の倍数として表されます。

アンダーシュート

この関数は、各遷移の最終状態レベルからの最大偏差に基づいてアンダーシュートのパーセント比を計算します。

立ち上がり (正極性) パルスでは、アンダーシュートは次のように表されます。

100(S2U)(S2S1)

ここで、U は High 状態レベルを下回る最大偏差、S2 は High 状態、S1 は Low 状態です。

立ち下がり (負極性) パルスでは、アンダーシュートは次のように表されます。

100(S1U)(S2S1)

次の図は、立ち上がり遷移のアンダーシュートの計算を示しています。

赤い破線は、推定された状態レベルを示します。双方向の黒い矢印は High と Low の状態レベル間の差を示しています。黒い実線は、High 状態レベルとアンダーシュートの値との差を示しています。

状態レベルの許容誤差

状態レベルごとに、上下限を指定することができます。こうした上下限は、「状態レベル +/- High 状態と Low 状態間の差のスカラー倍」として定義します。有用な許容誤差領域を提供するために、このスカラー値は 2/100 や 3/100 のような小さい数として指定します。一般に、Low 状態の $\alpha\%$ 領域は次のように定義されます。

$$S_1\pm{\alpha\over{100}}(S_2-S_1),$$

ここで、$S_1$ は Low 状態レベル、$S_2$ は High 状態レベルです。High 状態の $\alpha\%$ 許容誤差領域を得るには、式の最初の項を $S_2$ で置き換えます。

次の図は、正極性 2 値波形における各状態の 5% の上下限 (許容誤差領域) を示したものです。太い破線は、推定された状態レベルを示します。

参照

[1] IEEE Standard 181. IEEE® Standard on Transitions, Pulses, and Related Waveforms (2003): 15–17.

拡張機能

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

バージョン履歴

R2012a で導入