Main Content

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

statelevels

ヒストグラム法を使用した、2 値波形の状態レベル推定

説明

levels = statelevels(x) は、ヒストグラム法を使用して 2 値波形 x の Low 状態レベルおよび High 状態レベルを推定します。詳細については、アルゴリズムを参照してください。

levels = statelevels(x,nbins) では、ヒストグラムで使用するビンの数を正のスカラー値として指定します。

levels = statelevels(x,nbins,method) は、サブヒストグラムの平均またはモードを使用して状態レベルを推定します。

levels = statelevels(x,nbins,method,bounds) は、2 要素の実数行ベクトル bounds のヒストグラムの下限と上限を指定します。statelevels は、ヒストグラムを計算するときに、これらの境界の外側にある x の値をすべて無視します。

[levels,histogram] = statelevels(___) は、x の値のヒストグラムを返します。

[levels,histogram,binlevels] = statelevels(___) は、各ヒストグラム ビンの幅の中心値を返します。

statelevels(___) は、信号とそれに対応するヒストグラムのプロットを表示します。

すべて折りたたむ

2.3 V 不足減衰クロック データの Low 状態レベルおよび High 状態レベルを推定します。推定された状態レベルとサブヒストグラムを使ってデータをプロットします。

load("clockex.mat","x")

statelevels(x)

Figure State Level Information contains 2 axes objects. Axes object 1 with title Histogram of signal levels (100 bins), xlabel Level (Volts), ylabel Count contains an object of type line. Axes object 2 with title Signal, xlabel Samples, ylabel Level (Volts) contains 3 objects of type line.

ans = 1×2

    0.0027    2.3068

4 MHz でサンプリングされた 2.3 V 不足減衰クロック データの Low 状態レベルおよび High 状態レベルを推定します。

既定のビン数とサブヒストグラムのモードを使用して、状態レベルを推定します。

load("clockex.mat","x","t")
levs = statelevels(x)
levs = 1×2

    0.0027    2.3068

推定された Low 状態レベルおよび High 状態レベルを示すラインと共にクロック データをプロットします。

statelevels(x)

Figure State Level Information contains 2 axes objects. Axes object 1 with title Histogram of signal levels (100 bins), xlabel Level (Volts), ylabel Count contains an object of type line. Axes object 2 with title Signal, xlabel Samples, ylabel Level (Volts) contains 3 objects of type line.

ans = 1×2

    0.0027    2.3068

4 MHz でサンプリングされた 2.3 V 不足減衰クロック データの Low 状態レベルおよび High 状態レベルを推定します。

既定のビン数とサブヒストグラムの平均を使用して、状態レベルを推定します。推定された Low 状態レベルおよび High 状態レベルを示すラインと共にクロック データをプロットします。

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

statelevels(x,1e3,'mean')

Figure State Level Information contains 2 axes objects. Axes object 1 with title Histogram of signal levels (1000 bins), xlabel Level (Volts), ylabel Count contains an object of type line. Axes object 2 with title Signal, xlabel Samples, ylabel Level (Volts) contains 3 objects of type line.

ans = 1×2

   -0.0014    2.3014

4 MHz でサンプリングされた 2.3 V 不足減衰クロック データの Low 状態レベルおよび High 状態レベルを推定します。ヒストグラム法で使用されるヒストグラム カウントと各ヒストグラム ビンの幅の中心値を返します。4 つのビンを使用します。

load("clockex.mat","x","t")
[levs,histog,bilevs] = statelevels(x,4)
levs = 1×2

    0.2427    2.0428

histog = 4×1

    50
     0
     0
    50

bilevs = 4×1

    0.2427
    0.8427
    1.4428
    2.0428

波形をプロットして、レベルに注釈を付けます。

statelevels(x,4)

Figure State Level Information contains 2 axes objects. Axes object 1 with title Histogram of signal levels (4 bins), xlabel Level (Volts), ylabel Count contains an object of type line. Axes object 2 with title Signal, xlabel Samples, ylabel Level (Volts) contains 3 objects of type line.

ans = 1×2

    0.2427    2.0428

入力引数

すべて折りたたむ

2 値波形。実数値のベクトルとして指定します。

ヒストグラム ビンの数。実数の正の整数として指定します。

サブヒストグラムでの状態レベルの推定法。"mode" または "mean" として指定します。method は、Low 状態レベルおよび High 状態レベルの推定に使用する統計手法を指定します。アルゴリズムを参照してください。

ヒストグラムの下限と上限。2 要素の実数行ベクトルとして指定します。statelevels は、ヒストグラムを計算するときに、これらの境界の外側にある x の値をすべて無視します。

出力引数

すべて折りたたむ

Low 状態および High 状態のレベル。2 要素の行ベクトルとして返されます。状態レベルのベクトルは、ヒストグラム法によって推定されます。levels の最初の要素は Low 状態レベルで、2 番目の要素は High 状態レベルです。

ヒストグラム カウント。各ヒストグラム ビンにあるデータ値の数を含む nbins 要素の列ベクトルとして返されます。

ヒストグラム ビンの幅の中心値。列ベクトルとして返されます。この列ベクトルには、histogram のヒストグラム カウントに対するビンの幅の中心値が含まれます。

詳細

すべて折りたたむ

状態

状態とは、上位状態境界および下位状態境界を伴う特定のレベルです。状態は最小の負から最大の正まで順に配列されます。2 値波形において、最小の負の状態は 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% の上下限 (許容誤差領域) を示したものです。太い破線は、推定された状態レベルを示します。

アルゴリズム

statelevels は、ヒストグラム法を使用して 2 値波形の状態を推定します。ヒストグラム法は [1] に記述されています。この手法の手順を以下に示します。

  1. データの最大振幅、最小振幅、振幅範囲を決定します。

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

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

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

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

    下位ヒストグラム ビンのインデックスはilowi12(ihighilow)となります。

    上位ヒストグラム ビンのインデックスはilow+12(ihighilow)iihighとなります。

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

参照

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

拡張機能

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

バージョン履歴

R2012a で導入