Main Content

kurtogram

スペクトル尖度の可視化

説明

kgram = kurtogram(x) では、信号ベクトル x の高速 kurtogram kgram が行列として返されます。kurtogram では、正規化された周波数 (範囲 [0 π] に等間隔に並んだ周波数ベクトル) を使用して時間値を計算します。

kgram = kurtogram(x,sampx) は、sampx のレートまたは時間間隔でサンプリングされた信号ベクトル x の高速 kurtogram を行列として返します。

kgram = kurtogram(xt) は、timetable xt の高速 kurtogram kgram を行列として返します。

kgram = kurtogram(___,level) は、指定された level を使用して高速 kurtogram を返します。level は、使用するウィンドウ分解能のレベルを決定し、その結果いくつのスペクトル尖度の場合分けを計算するかを決定します。

[kgram,f,w,fc,wc,bw] = kurtogram(___) は、高速 kurtogram を以後のバンドパス フィルター設計とスペクトル尖度に使用できるパラメーターのセットと共に返します。

  • fkgram の周波数ベクトル

  • wkgram のウィンドウ サイズ ベクトル

  • fc — 最大スペクトル尖度がある周波数

  • wc — kurtogram 上の最大スペクトル尖度があるウィンドウ サイズ

  • bw — 最適なバンドパス フィルターとしての推奨帯域幅

この構文は、これより前の構文の任意の入力引数で使用できます。

kurtogram(___) は、kurtogram をキーとなる重要な最適化パラメーターと共にプロットし、データは返しません。この構文は、これより前の構文の任意の入力引数で使用できます。

すべて折りたたむ

非定常信号の kurtogram を計算します。kurtogram のさまざまなレベルの設定を比較します。正規化された周波数を使用する kurtogram を調べます。kurtogram を使用して、過渡検出を強化するための信号の前処理に使用できるフィルターの設定を指定します。

チャープ成分とホワイト ガウス ノイズを含む信号を生成します。

fs = 1000;
t = 0:1/fs:10;
f1 = 300;
f2 = 400;
xc = chirp(t,f1,10,f2);
x = xc+randn(1,length(t));

サンプル レート fs を使用して kurtogram をプロットします。

kurtogram(x,fs)

kurtogram は、ウィンドウの長さと周波数の範囲について尖度の結果を示します。高レベルの尖度は、高レベルの非定常または非ガウス動作に対応します。ピーク尖度を、ウィンドウの長さおよびそれに連動する中心周波数と共にテキストで上部に示します。帯域幅は、ウィンドウの長さの関数です。

最大レベルを 5 に低減している効果を調べます。

level = 5;
kurtogram(x,fs,level)

分解能が低いことは明白であり、これが低いピーク尖度値と中心周波数の変位につながっています。

ここでサンプル レートまたは時間を指定せずに尖度をプロットします。

kurtogram(x)

正規化された周波数を使用した kurtogram が示されています。

プロットの上部のパラメーターは、データをプレフィルター処理し、非定常成分の分化を強化するために使用できるバンドパス フィルターの推奨値を与えます。また kurtogram にこれらの値を返させて、フィルター処理やスペクトル尖度の関数により直接的に入力されるようにできます。

[kgram,f,w,fc,wc,bw] = kurtogram(x);
wc
wc = 256
fc
fc = 2.4421
bw
bw = 0.0245

これらの値は、最初のプロットの最適なウィンドウ サイズ、中心周波数、帯域幅に一致します。kgram は実際の kurtogram 行列であり、f および w は周波数およびそれに付随するウィンドウ サイズ ベクトルです。

関数 pkurtosis は、既定の pspectrum ウィンドウ サイズ (時間分解能) を使用します。代わりにウィンドウ サイズを指定して使用できます。この例では、最適なウィンドウ サイズを返す関数 kurtogram を使用し、その結果を pkurtosis に使用します。

ホワイト ガウス ノイズを含むチャープ信号を作成します。

fs = 1000;
t = 0:1/fs:10;
f1 = 300;
f2 = 400;
x = chirp(t,f1,10,f2)+randn(1,length(t));

既定のウィンドウ サイズを使用してスペクトル尖度をプロットします。

pkurtosis(x,fs)
title('Spectral Kurtosis with Default Window Size')

ここで kurtogram を使用して最適なウィンドウ サイズを計算します。

kurtogram(x,fs)

また kurtogram プロットは、300 から 400 Hz の範囲のチャープも示して最適なウィンドウ サイズが 256 であることを示します。w0pkurtosis に入力します。

w0 = 256;
pkurtosis(x,fs,w0)
title('Spectral Kurtosis with Optimum Window Size of 256')

主な偏位には高い尖度値があります。高い値は、定常成分と非定常成分との間の区別を改善し、非定常成分を特徴として抽出する能力を向上させます。

入力引数

すべて折りたたむ

kurtogram が高速 kurtogram を返す、時系列の信号。ベクトルで指定します。

サンプル レートまたはサンプル時間。以下のいずれかを指定します。

  • 正の数値スカラー — Hz 単位での周波数

  • duration スカラー — X の連続するサンプル間の時間間隔

  • ベクトル、duration 配列、または datetime 配列 — x の各要素に対応する時点または持続時間

例については、非定常信号の kurtogram の計算を参照してください。

sampx が時間ベクトルを表す場合、時間サンプルは不等間隔で構いませんが、時間間隔の中央値と時間間隔の平均値は以下に従わなければならないという pspectrum の制約があります。

1100<Median time intervalMean time interval<100.

sampx を空として指定した場合、kurtogram は正規化周波数を使用します。言い換えれば、範囲 [0 π] に等間隔に並んだ周波数ベクトルが想定されます。

kurtogram がそこから高速 kurtogram を返す信号 timetable。単一の列で単一の変数を含む timetable で指定します。xt は、増加する、有限の行時間でなければなりません。timetable に時点がないまたは重複している場合、欠損または重複する時間および非等間隔の時間をもつ timetable の整理のヒントを使用してこれを修正できます。xt は不等間隔サンプルで構いませんが、時間間隔の中央値と時間間隔の平均値は以下に従わなければならないという pspectrum の制約があります。

1100<Median time intervalMean time interval<100.

計算する場合分けの数を決定する最大 kurtogram レベル。正の整数値として指定します。レベルによって kurtogram が使用する周波数ウィンドウ サイズが決まり、したがって周波数分解能も決まります。周波数分解能を向上させると、時間分解能が低下します。スペクトル尖度の推定値は、いずれかの分解能が低すぎると精度を欠くようになります。level を指定する場合は、時間および周波数の両方の分解能への影響のバランスをとらなければなりません。

出力引数

すべて折りたたむ

高速 kurtogram。level で定義されている次元の行列として返されます。kgram は 2*level 行 3* 2level 列です。行列の各行は、次のシーケンスに関して、周波数ベクトルの各要素、および行の位置によって定義されるウィンドウ サイズについてのスペクトル尖度の結果を表します。

[0,1,log2(3),2,1+log2(3),3,3+log2(3),...,n,n+log2(3),...,level],

ここでレベル n に相当するウィンドウ サイズは、2n+1 個のサンプルです。

kgram と関連付けられている周波数ベクトル。ベクトルとして返されます。f の長さは、kgram の列数と等しくなります。

kgram と関連付けられているウィンドウ サイズ ベクトル。ベクトルとして返されます。f の長さは、kgram の列数と等しくなります。

kgram の最大スペクトル尖度値の周波数。以下のスカラーとして返されます。

  • ラジアン/秒単位。sampx が指定されず、kurtogram が正規化周波数を使用することになった場合

  • Hz 単位。sampx が定義されている場合

フィルター処理された信号の包絡線の尖度を最大化する、最適なバンドパス フィルターの中心周波数として、fc を使用できます。包絡線尖度を最大化することで、得られるインパルス成分を特徴として抽出しやすくなります。

kgram の最大スペクトル尖度値のウィンドウ サイズ。サンプルを単位とするスカラーとして返されます。wc を使用してpkurtosisに最適なウィンドウ サイズを提供できます。例については、カスタム ウィンドウ サイズを使用したスペクトル尖度のプロットを参照してください。

最適なバンドパス フィルターとしての推奨帯域幅。以下のスカラーとして返されます。

  • ラジアン/秒単位。sampx が指定されず、kurtogram が正規化周波数を使用することになった場合

  • Hz 単位。sampx を指定した場合

bw を使用して、フィルター処理された信号の包絡線の尖度を最大化するフィルターを作成できます。bwfx/wc に等しく、ここで fxkurtogramsampx から決定する信号サンプル周波数です。

詳細

すべて折りたたむ

Kurtogram

関数 kurtogram は、pkurtosis を使用してスペクトル尖度の解析を行う際に使用できるキー情報を提供します。kurtogram は、高速 kurtogram アルゴリズムを使用して複数のウィンドウ サイズのスペクトル尖度を計算します。kurtogram は、kurtogram およびその関連する周波数とウィンドウ ベクトルと連動して、最適なウィンドウ サイズとその他のフィルター調整パラメーターを返します。またその計算結果を可視化できます。

高速 kurtogram アルゴリズムでは、より忠実度の高い pkurtosis がするように短時間フーリエ変換 (STFT) を計算するのではなく、簡易計算と併せてバンドパス フィルター処理を使用し、各ウィンドウ サイズおよび周波数についてスペクトル尖度を概算します。また、アルゴリズムが全 kurtogram に対し、周波数-ウィンドウ平面の範囲にわたって求める反復回数も低減します[1]

参照

[1] Antoni, J., and R. B. Randall. "Fast Computation of the Kurtogram for the Detection of Transient Faults." Mechanical Systems and Signal Processing. Vol. 20, Issue 1, 2007, pp. 108–124.

拡張機能

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

バージョン履歴

R2018a で導入

すべて展開する