Main Content

pulsewidth

2 値波形のパルス幅

説明

w = pulsewidth(x) は、入力 2 値波形における、各正極性パルスの初回遷移と最終遷移の中央基準レベル瞬時の時間差を返します。

w = pulsewidth(x,fs) では、サンプル レート fs を Hz で指定します。波形の最初のサンプルは t = 0 に対応します。

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

[w,initcross] = pulsewidth(___) は、各パルスの初回遷移の中央基準レベル瞬時 initcross を返します。前の構文の入力を任意に組み合わせて指定できます。

[w,initcross,finalcross] = pulsewidth(___) は、各パルスの最終遷移の中央基準レベル瞬時 finalcross を返します。

[w,initcross,finalcross,midlev] = pulsewidth(___) は、中央基準レベルに対応する波形での値 midlev を返します。

W = pulsewidth(___,Name,Value) は、1 つ以上の Name,Value 引数を使用して追加のオプションを指定します。

pulsewidth(___) は信号をプロットし、関数がパルス幅を計算する各パルスの領域を暗色で表示します。この関数により中間点クロッシングの位置と、関連する基準レベルがマークされます。また、この関数は状態レベルとそれに関連する上下限もプロットします。

すべて折りたたむ

4 MHz でサンプリングした 2 値波形のパルス幅を計算します。

load('pulseex.mat','x','t')
w = pulsewidth(x,t)
w = 1.5016e-06

波形をプロットしてパルス幅に注釈を付けます。

pulsewidth(x,t);

4 MHz でサンプリングした 2 値波形の初回遷移と最終遷移の発生を計算します。

load('pulseex.mat','x','t');
fs = 4e6;

[w,initcross,finalcross] = pulsewidth(x,fs);

結果と遷移の注釈をプロットします。

pulsewidth(x,fs);
ax = gca;
ax.XTick = [initcross finalcross];

データからレベルを推定する代わりに、2 値波形の状態レベルを指定します。Low 状態レベルを 0、High 状態レベルを 5 に指定します。

load('pulseex.mat','x','t')
fs = 4e6;
[w,initcross,finalcross] = pulsewidth(x,fs,'StateLevels',[0 5]);

結果と遷移の注釈をプロットします。

pulsewidth(x,fs,'StateLevels',[0 5]);
ax = gca;
ax.XTick = [initcross finalcross];

入力引数

すべて折りたたむ

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

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

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

名前と値の引数

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

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

例: 'StateLevels',[0 5] は、Low の状態レベルとして 0、High の状態レベルとして 5 を指定します。

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

パルスの極性。'positive' または 'negative' で指定します。'positive' を指定する場合、この関数は初回遷移が立ち上がり (正極性) のパルスを探します。'negative' を指定する場合、関数 pulsewidth は初回遷移が立ち下がり (負極性) のパルスを探します。詳細については、パルスの極性を参照してください。

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

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

出力引数

すべて折りたたむ

秒単位のパルス幅。ベクトルとして返されます。パルス幅は、パルスの初回遷移と最終遷移の間の時間差です。初回遷移と最終遷移の時間は [1]transition occurence instants と呼ばれています。

メモ

関数 pulsewidth は中央基準レベル瞬時を判別するのに内挿を使用するので、w は 2 値波形 x のサンプリング瞬時に対応しない値を含む可能性があります。

各パルスの初回遷移の中央基準レベル瞬時。列ベクトルとして返されます。

各パルスの最終遷移の中央基準レベル瞬時。列ベクトルとして返されます。

中央基準レベルに対応する波形での値。スカラーとして返されます。

詳細

すべて折りたたむ

状態レベルの推定

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

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

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

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

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

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

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

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

中央基準レベル

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

S1+12(S2S1)

中央基準レベル瞬時

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

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

ここで、

  • y50% は中央基準レベルを示します。

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

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

パルスの極性

パルスの初回遷移が立ち上がりである場合、パルスは正極性となります。すなわち、正極性 (立ち上がり) パルスの終端状態は開始状態よりも正方向に大きな値をとることになります。次の図は正極性パルスを示しています。

パルスの初回遷移が立ち下がりである場合、パルスは負極性となります。すなわち、負極性 (立ち下がり) パルスの開始状態は終端状態よりも正方向に大きな値をとることになります。次の図は負極性パルスを示しています。

状態レベルの許容誤差

状態レベルごとに、上下限を指定することができます。こうした上下限は、「状態レベル +/- 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).

拡張機能

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

バージョン履歴

R2012a で導入