Main Content

midcross

2 値波形での中央基準レベル クロッシング

説明

c = midcross(x) は、入力信号 x の各遷移が 50% 基準レベルと交差する時点を返します。遷移を判定するため、関数 midcross ではヒストグラム法により x の状態レベルを推定し、Low 状態の上限と High 状態の下限を横断するすべての区間を識別します。

c = midcross(x,Fs) では、サンプル レート Fs を指定します。

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

[c,midlev] = midcross(___) は、中央基準レベルに対応する波形での値を返します。前の構文の入力を任意に組み合わせて指定できます。

c = midcross(x,Name,Value) は、1 つ以上の名前と値の引数で指定される追加オプションにより、中央基準レベル クロッシングに対応する時点を返します。

midcross(___) は信号をプロットし、中間点クロッシング (中央基準レベル瞬時) の位置とそれに関連する基準レベルを示します。また、状態レベルを状態の上下限と共にプロットします。

すべて折りたたむ

サンプリング間隔を 1 と仮定し、2 値波形の中央基準レベル瞬時を計算します。結果をプロットします。

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

midcross(x)

ans = 21.5000

波形が 50% の基準レベルと交差する瞬間は 21.5 です。これは入力ベクトルに存在するサンプリング瞬時ではありません。midcross は、内挿を使用して中央基準レベル クロッシングを識別します。

サンプリングされた 2 値波形の中央基準レベル瞬時を計算します。時間情報を使用してサンプル レートを決定します。ここでは 4 MHz になります。

load('transitionex.mat','x','t')
Fs = 1/(t(2)-t(1))
Fs = 4000000

サンプル レートを使用して、中央基準レベル瞬時を秒単位で表します。波形をプロットして、結果に注釈を付けます。

midcross(x,Fs)

ans = 5.1250e-06

2 値波形と長さの等しいサンプル時間のベクトルを使用して、中央基準レベル瞬時を計算します。サンプル レートは 4 MHz です。

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

C = midcross(x,t)
C = 5.1250e-06

波形のプロット上の結果に注釈を付けます。

midcross(x,t);

中央基準レベル瞬時に対応するレベルを計算します。

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

[~,midlev] = midcross(x,t)
midlev = 1.1388

波形のプロット上の結果に注釈を付けます。

midcross(x,t);

60% 基準レベル瞬時と 4 MHz でサンプリングした 2 値波形の値を取得します。

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

[mc,Lev60] = midcross(x,t,MidPercentReferenceLevel=60)
mc = 5.1473e-06
Lev60 = 1.3682

波形のプロット上の結果に注釈を付けます。

midcross(x,t,MidPercentReferenceLevel=60);

入力引数

すべて折りたたむ

2 値波形。実数値のベクトルとして指定します。最初のサンプル瞬時は t=0 に対応します。

サンプル レート。正の実数スカラーとして Hz 単位で指定します。

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

名前と値の引数

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

例: c = midcross(x,t,MidPercentReferenceLevel=30)

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

例: c = midcross(x,t,'MidPercentReferenceLevel',30)

波形振幅のパーセント比で表した中央基準レベル。スカラーとして指定します。詳細については、中央基準レベルを参照してください。

Low 状態レベルおよび High 状態レベル。1 行 2 列の実数値ベクトルとして指定します。最初の要素は Low 状態レベルで、2 番目の要素は High 状態レベルです。'StateLevels' を指定しない場合、この関数はヒストグラム法を使用して入力波形から状態レベルを推定します。

許容誤差レベル (状態の上下限)。スカラーとして指定し、パーセント比として表されます。Low 状態と High 状態の上下限は、状態レベル +/- 状態レベル間の差の倍数として表されます。詳細については、状態レベルの許容誤差を参照してください。

出力引数

すべて折りたたむ

中央基準レベルとのクロッシング時点。ベクトルとして返されます。

メモ

midcross は、クロッシングの瞬間の判断に内挿を使用するため、c はサンプリング瞬時に対応しない値を含む可能性があります。

中央基準レベル。スカラーとして返されます。

詳細

すべて折りたたむ

中央基準レベル

Low 状態レベルが S1、High 状態レベルが S2 の 2 値波形における中央基準レベルは次になります。

S1+12(S2S1)

中央基準レベル瞬時

  • y50% によって、中央基準レベルを示します。

  • t50%- および t50%+ によって、y50% に値として最も近い波形値に対応する、2 つの連続するサンプリング瞬時を示します。

  • y50%- および y50%+ によって、t50%- および t50%+ における波形での値を示します。

中央基準レベル瞬時は次になります。

t50%=t50%+(t50%+t50%y50%+y50%)(y50%+y50%)

状態レベルの許容誤差

状態レベルごとに、上下限を指定することができます。こうした上下限は、「状態レベル +/- 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 on Transitions, Pulses, and Related Waveforms, IEEE Standard 181, 2003. p. 20.

拡張機能

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

バージョン履歴

R2012a で導入