Main Content

tfsmoment

信号の時間-周波数分布の条件付きスペクトル モーメント

説明

時間-周波数モーメントは、時間とともに周波数が変化する信号 (つまり非定常信号) を特徴付ける効率的な方法を提供します。そのような信号は、ハードウェアに劣化や故障がある機械から発生することがあります。従来のフーリエ解析で時変の周波数動作を捉えることはできません。短時間フーリエ変換 (STFT) や他の時間-周波数解析手法によって生成された時間-周波数分布では時変動作を捉えることができますが、それらの分布をそのまま特徴として扱うと、計算負荷が高く、無関係の望ましくない特徴で特性が形成される可能性があります。それに対し、時間-周波数分布の結果を低次の時間-周波数モーメントに抽出すると、信号の本質的な特徴をはるかに小さいデータ パッケージで捉える方法が提供されます。それらのモーメントを使用することにより、特徴の抽出や比較の計算負荷が大幅に軽減されます。これは、リアルタイムの動作において重要な利点となります[1][2]

Predictive Maintenance Toolbox™ は、時間-周波数モーメントの 3 つの分岐を実装します。

  • 条件付きスペクトル モーメント — tfsmoment

  • 条件付き時間モーメント — tftmoment

  • 時間-周波数の結合モーメント — tfmoment

momentS = tfsmoment(xt,order) は、timetable xt条件付きスペクトル モーメントtimetable として返します。momentS の変数で order で指定した次数のスペクトル モーメントが提供されます。xt のデータは不等間隔サンプルでかまいません。

momentS = tfsmoment(x,fs,order) は、レート Fs でサンプリングされた時系列ベクトル x の条件付きスペクトル モーメントを返します。モーメントは、各列が order の各要素に対応するスペクトル モーメントを表す行列として返されます。この構文では、x は等間隔サンプルでなければなりません。

momentS = tfsmoment(x,ts,order) は、ts (秒単位) で指定された時点にサンプリングされた x の条件付きスペクトル モーメントを返します。

  • ts がスカラーの duration の場合、tfsmoment はそれをすべてのサンプルに等間隔に適用します。

  • ts がベクトルの場合、tfsmoment はその各要素を x の対応するサンプルに適用します。この構文は不等間隔サンプリングに使用します。

momentS = tfsmoment(p,fp,tp,order) は、パワー スペクトログラムが p である信号の条件付きスペクトル モーメントを返します。fp には、p に格納されたスペクトル推定に対応する周波数が格納されます。tp には、短時間パワー スペクトル推定の計算に使用されるウィンドウ セグメントの中心に対応する時点のベクトルが格納されます。この構文は次の場合に使用します。

  • 使用するパワー スペクトルまたはスペクトログラムが既にある。

  • tfsmoment で適用される既定の pspectrum のオプションを受け入れるのではなく、pspectrum のオプションをカスタマイズする。最初に目的のオプションを指定して pspectrum を使用してから、その出力 ptfsmoment の入力として使用します。この方法でパワー スペクトログラムのプロットも可能です。

momentS = tfsmoment(___,Name,Value) は、名前と値のペアの引数を使用して追加のプロパティを指定します。オプションには、モーメントの集中化と周波数範囲の指定があります。

Name,Value は、前述の構文の任意の入力引数の組み合わせで使用できます。

[momentS,t] = tfsmoment(___) は、時間ベクトル t を返します。

t は、前述の構文の任意の入力引数の組み合わせで使用できます。

出力引数のない tfsmoment(___) は、条件付きスペクトル モーメントをプロットします。プロットの x 軸が時間で、プロットの y 軸が対応するスペクトル モーメントです。

この構文は、前述の構文の任意の入力引数の組み合わせで使用できます。

すべて折りたたむ

時系列の 2 次条件付きスペクトル モーメント (分散) をプロットのみの手法とデータを返す手法を使用してプロットします。それとは別にヒストグラムをプロットしてモーメントを可視化します。マシンの故障状態と健全な状態のデータのモーメントを比較します。

この例は、データ ソースと履歴のより包括的な取り扱いを示す転動体ベアリングの故障診断から応用したものです。

2 つの状態の振動の測定値を含むデータを読み込みます。x_inner1sr_inner1 に故障状態のデータ ベクトルとサンプル レートが格納されています。x_baselinesr_baseline に健全な状態のデータ ベクトルとサンプル レートが格納されています。

load tfmoment_data.mat x_inner1 sr_inner1 x_baseline1 sr_baseline1

故障状態のデータを調べます。サンプル レートから時間ベクトルを構成し、データをプロットします。その後、動作がより明確にわかるように 0.1 秒のセクションにズームインします。

t_inner1 = (0:length(x_inner1)-1)/sr_inner1; % Construct time vector of [0 1/sr 2/sr ...] matching dimension of x
figure
plot(t_inner1,x_inner1) 
title ('Inner1 Signal')
hold on
xlim([0 0.1]) % Zoom in to an 0.1 s section
hold off

プロットから、経時的な加速度の測定値に周期的なインパルス性の変動があることがわかります。

出力引数のない tfsmoment の構文を使用して 2 次スペクトル モーメント (order=2) をプロットします。

order = 2;
figure
tfsmoment(x_inner1,t_inner1,order)
title('Second Spectral Moment of Inner1')

x_inner1 のスペクトルの分散の経時的な変化がプロットに示されます。tfsmoment でデータを返していないため、この可視化 (時間に対するモーメント) に制限されます。次に、もう一度 tfsmoment を使用して 2 次スペクトル モーメントを計算します。今回は、モーメントの値と関連する時間ベクトルの両方を返す構文を使用します。構成した時間ベクトル (t_inner1) ではなく、サンプル レート (sr_inner1) を構文で直接使用できます。

[momentS_inner1,t1_inner1] = tfsmoment(x_inner1,sr_inner1,order);

これで、前と同様の時間に対するモーメントのプロットを moment_inner1t1_inner1 を使用して実行できます。結果は前と同じです。さらに、tfsmoment でデータを返しているため、モーメント ベクトルの追加の解析や可視化も実行できます。ヒストグラムを使用して信号の特性に関する簡潔な情報が得られます。

figure
histogram(momentS_inner1)
title('Second Spectral Moment of Inner1')

このヒストグラム単独では、明確な故障の情報はわかりません。ただし、健全な状態のデータから生成されたヒストグラムと比較することができます。

まず、前の inner1 データと同じ baseline1 データの時間ベクトル構成を使用して、内部とベースラインの時系列を直接比較します。

t_baseline1 = (0:length(x_baseline1)-1)/sr_baseline1;

figure
plot(t_inner1,x_inner1)
hold on
plot(t_baseline1,x_baseline1)
hold off
legend('Faulty Condition','Healthy Condition')
title('Vibration versus Time for Faulty and Healthy Conditions')

baseline1 データの 2 次スペクトル モーメントを計算します。baseline1inner1 の時間履歴を比較します。

[momentS_baseline1,t1_baseline1] = tfsmoment(x_baseline1,sr_baseline1,2);

figure
plot(t1_inner1,momentS_inner1)
hold on
plot(t1_baseline1,momentS_baseline1)
hold off
legend('Faulty Condition','Healthy Condition')
title('Second Spectral Moment versus Time for Faulty and Healthy Conditions')

モーメントのプロットは前の振動のプロットとは異なる動作を示しています。振動データについては、故障ケースの方が健全ケースよりもノイズがはるかに多く、スパイクの振幅も大きくなっていますが、どちらもゼロ平均であるように見えます。一方、スペクトル分散 (2 次スペクトル モーメント) は故障ケースで大幅に低くなっています。モーメントについても、故障ケースの方が健全ケースよりもノイズが多くなっています。

ヒストグラムをプロットします。

figure
histogram(momentS_inner1);
hold on
histogram(momentS_baseline1);
hold off
legend('Faulty Condition','Healthy Condition')
title('Second Spectral Moment for Faulty and Healthy Conditions')

どちらのプロットでも、モーメントの動作で故障状態と健全な状態が区別されています。ヒストグラムにより、x 軸方向の中心点、広がり、ピークのヒストグラム ビンなど、明確な分布の特性が得られます。

時系列データ セットの最初の 4 つの条件付きスペクトル モーメントを判別し、ヒストグラムで可視化するモーメントを抽出します。

機械の振動の測定値 (x_inner1) とサンプル レート (sr_inner1) を含むデータを読み込みます。その後、tfsmoment を使用して最初の 4 つのモーメントを計算します。これらのモーメントは統計量を表します。1) 平均、2) 分散、3) 歪度、4) 尖度です。

モーメント指定子を引数 order 内でベクトルとして指定できます。

load tfmoment_data.mat x_inner1 sr_inner1
momentS_inner1 = tfsmoment(x_inner1,sr_inner1,[1 2 3 4]);

入力ベクトルと出力行列の次元を比較します。

xsize = size(x_inner1)
xsize = 1×2

      146484           1

msize = size(momentS_inner1)
msize = 1×2

   524     4

スペクトログラムの計算では最適なサイズの低分解能時間ウィンドウが生成されるため、データ ベクトル x_inner の方がモーメント行列 momentS_inner1 のベクトルよりもかなり長くなります。この場合、tfsmoment は、モーメントの次数ごとに 1 列ずつ、4 つの列を含むモーメント行列を返します。

3 次モーメント (歪度) と 4 次モーメント (尖度) のヒストグラムをプロットします。これらは momentS_inner1 の 3 列目と 4 列目にあります。

momentS_3 = momentS_inner1(:,3);
momentS_4 = momentS_inner1(:,4);
figure
histogram(momentS_3)
title('Third Spectral Moment (Skewness) of x inner1')

figure
histogram(momentS_4)
title('Fourth Spectral Moment (Kurtosis) of x inner1')

プロットは似ていますが、ビン数と勾配の急峻さに関して、それぞれに固有の特性が一部あります。

既定では、tfsmoment は関数pspectrumを内部的に呼び出して、モーメントの計算に tfsmoment で使用するパワー スペクトログラムを生成します。tfsmoment で代わりに使用する既存のパワー スペクトログラムをインポートすることもできます。この機能は、開始点となるパワー スペクトログラムが既にある場合や最初にスペクトログラムを明示的に生成して pspectrum のオプションをカスタマイズする場合に便利です。

カスタマイズしたオプションを使用して生成されたパワー スペクトログラムを入力します。結果のスペクトル モーメントのヒストグラムを tfsmoment で既定のpspectrumのオプションを使用して生成したものと比較します。

2 つのパワー スペクトルと関連する周波数および時間のベクトルを含むデータを読み込みます。

p_inner1_def のスペクトルは、既定の pspectrum のオプションを使用して作成されたものです。入力スペクトルを構文で指定していない場合に tfsmoment で内部的に計算される内容と等価です。

p_inner1_MinThr のスペクトルは、MinThreshold pspectrum オプションを使用して作成されたものです。このオプションは、低水準のノイズを除外するために下限を非ゼロの値に設定します。この例では、0.5% の水準を下回るノイズを除外するようにしきい値が設定されています。

load tfmoment_data.mat p_inner1_def f_p_def t_p_def ...
    p_inner1_MinThr f_p_MinThr t_p_MinThr
load tfmoment_data.mat x_inner1 x_baseline1

両方の場合について、2 次スペクトル モーメント (分散) を求めます。

moment_p_def = tfsmoment(p_inner1_def,f_p_def,t_p_def,2);
moment_p_MinThr = tfsmoment(p_inner1_MinThr,f_p_MinThr,t_p_MinThr,2);

ヒストグラムを一緒にプロットします。

figure
histogram(moment_p_def);
hold on
histogram(moment_p_MinThr);
hold off
legend('Moment from Default P','Moment from Customized P')
title('Second Spectral Moment for Inner1 from Input Spectrograms')

ヒストグラムの全体的な広がりは同じですが、しきい値を適用したモーメントの方が既定のモーメントよりも、ヒストグラムの低いモーメントの振幅レベルでピークのビンが高くなっています。この例は例示のみを目的としたものですが、スペクトルの計算段階の前処理によって生じる可能性がある影響がわかります。

既定では、tfsmoment は計算の一環としてモーメントを集中化します。つまり、条件付きスペクトル モーメントの一環として、センサー データの平均 (最初のモーメント) をセンサー データから減算します。オフセットを維持する場合は、入力引数 Centralizefalse に設定できます。

機械の振動の測定値 x とサンプル レート sr を含むデータを読み込みます。2 次モーメント (order = 2) を集中化あり (既定) と集中化なし (Centralize = false) の両方で計算します。ヒストグラムを一緒にプロットします。

load tfmoment_data.mat x_inner1 sr_inner1
momentS_centr = tfsmoment(x_inner1,sr_inner1,2);
momentS_nocentr = tfsmoment(x_inner1,sr_inner1,2,'Centralize',false);

figure
histogram(momentS_centr)
hold on
histogram(momentS_nocentr);
hold off
legend('Centralized','Noncentralized')
title('Second Spectral Moment of x inner1 With and Without Centralization')

集中化されていない分布は右にオフセットしています。

実際の測定値は、相対時間ではなく実際の時間と読み取り値を記録するタイムスタンプ付きの table の一部としてパッケージ化されていることがよくあります。このデータの取得にはtimetable形式を使用できます。この例では、時系列ベクトルの条件付きスペクトル モーメントのプロットなどの他の tfsmoment の例で使用しているデータ ベクトル入力とは対照的に、tfsmomenttimetable 入力を使用する場合の動作を示します。

機械の一部についての測定の読み取り値と時間の情報を格納した単一の timetable xt_inner1 で構成されるデータを読み込みます。timetable のプロパティを調べます。

load tfmoment_tdata.mat xt_inner1;
xt_inner1.Properties
ans = 
  TimetableProperties with properties:

             Description: ''
                UserData: []
          DimensionNames: {'Time'  'Variables'}
           VariableNames: {'x_inner1'}
    VariableDescriptions: {}
           VariableUnits: {}
      VariableContinuity: []
                RowTimes: [146484x1 duration]
               StartTime: 0 sec
              SampleRate: 4.8828e+04
                TimeStep: 2.048e-05 sec
                  Events: []
        CustomProperties: No custom properties are set.
      Use addprop and rmprop to modify CustomProperties.

この table は Time の列と変数で構成されており、変数は x_inner1 だけです。

timetable のデータの 2 次と 4 次の条件付きスペクトル モーメントを求めます。結果のモーメントの timetable のプロパティを調べます。

order = [2 4];
momentS_xt_inner1 = tfsmoment(xt_inner1,order);
momentS_xt_inner1.Properties
ans = 
  TimetableProperties with properties:

             Description: ''
                UserData: []
          DimensionNames: {'Time'  'Variables'}
           VariableNames: {'CentralSpectralMoment2'  'CentralSpectralMoment4'}
    VariableDescriptions: {}
           VariableUnits: {}
      VariableContinuity: []
                RowTimes: [524x1 duration]
               StartTime: 0.011725 sec
              SampleRate: 175.6403
                TimeStep: 0.0056935 sec
                  Events: []
        CustomProperties: No custom properties are set.
      Use addprop and rmprop to modify CustomProperties.

返された timetable では、変数 'CentralSpectralMoment2' と 'CentralSpectralMoment4' でモーメントを表しています。それぞれのモーメントの計算内容だけでなく、集中化されているかどうかの情報も提供されます。

時間とモーメントの情報に timetable のプロパティから直接アクセスできます。2 次と 4 次のモーメントを計算します。4 次モーメントをプロットします。

tt_inner1 = momentS_xt_inner1.Time;
momentS_inner1_2 = momentS_xt_inner1.CentralSpectralMoment2;
momentS_inner1_4 = momentS_xt_inner1.CentralSpectralMoment4;

figure
plot(tt_inner1,momentS_inner1_4)
title('Fourth Spectral Moment of Timetable Data')

時系列ベクトルの条件付きスペクトル モーメントのプロットで示しているように、モーメント データの可視化にはヒストグラムが非常に便利です。変数 CentralSpectralMoment2 のプロパティを直接参照してヒストグラムをプロットします。

figure
histogram(momentS_xt_inner1.CentralSpectralMoment2)
title('Second Spectral Moment of xt inner1 Timetable')

入力引数

すべて折りたたむ

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

1100<Median time intervalMean time interval<100.

timetable 入力の例については、timetable のデータ測定値の条件付きスペクトル モーメントの測定を参照してください。

返すモーメント次数。次のいずれかとして指定します。

  • 整数 — 1 つのモーメントを計算します。

  • ベクトル — 複数のモーメントを一度に計算します。

例: momentS = tfsmoment(x,2) は、x の時間-周波数分布の 2 次スペクトル モーメント (分散) を指定します。

例: momentS = tfsmoment(x,[1 2 3 4]) は、x の時間-周波数分布の最初の 4 つのモーメント次数を指定します。

任意の次数を任意の数だけ指定できますが、低次のモーメントの方が計算負荷が低く、リアルタイムの用途に適しています。最初の 4 つのモーメント次数はデータ セットの統計モーメントに次のように対応します。

  1. 平均

  2. 分散

  3. 歪度 (平均に対する非対称性の度合い)

  4. 尖度 (分布における外れ値の裾の長さ — 正規分布の尖度は 3)

例については、以下を参照してください。

tfsmoment でモーメントを返す時系列信号。ベクトルとして指定します。

時系列入力の例については、時系列ベクトルの条件付きスペクトル モーメントのプロットを参照してください。

x が等間隔サンプルの場合の x のサンプル レート。ヘルツ単位の正のスカラーとして指定します。

サンプル時間値。次のいずれかとして指定します。

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

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

ts は不等間隔でかまいませんが、時間間隔の中央値と時間間隔の平均値は以下に従わなければならないという pspectrum の制約があります。

1100<Median time intervalMean time interval<100.

信号のパワー スペクトログラムまたはスペクトル。行列 (スペクトログラム) または列ベクトル (スペクトル) として指定します。p には、時系列信号についての短期の時間局在型のパワー スペクトログラムの推定が格納されます。p を指定した場合、tfsmoment は独自のパワー スペクトログラムを生成する代わりに p を使用します。例については、カスタマイズしたパワー スペクトログラムを使用した条件付きスペクトル モーメントの計算を参照してください。

パワー スペクトログラムまたはスペクトル ptfsmoment に明示的に与えられる場合の p の周波数。ヘルツ単位のベクトルとして指定します。fp の長さは p の行数と等しくなければなりません。

パワー スペクトログラムまたはスペクトル ptfsmoment に明示的に与えられる場合の p の時間情報。次のいずれかとして指定します。

  • 時間点のベクトル。データ型は数値、duration、または datetime のいずれかです。ベクトル tp の長さは p の列数と等しくなければなりません。

  • p の時間間隔を表す duration スカラー。スカラーの形式の tp は、p がパワー スペクトログラム行列の場合にのみ使用できます。

  • p が列ベクトル (パワー スペクトル) である特殊なケースでは、tp をスペクトルの時点を表す数値、duration、または datetime のスカラーにできます。

名前と値の引数

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

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

例: 'Centralize',false,'FrequencyLimits',[10 100] は、信号の 10 Hz から 100 Hz までの範囲の部分について非集中条件付きスペクトル モーメントを計算します。

モーメントの集中化のオプション。'Centralize' と logical で構成されるコンマ区切りのペアとして指定します。

  • Centralizetrue の場合、tfsmoment は条件付き平均 (最初のモーメント) を計算で減算して集中条件付きモーメントを返します。

  • Centralizefalse の場合、tfsmoment はデータのオフセットを維持して非集中モーメントを返します。

例については、集中化されていない条件付きスペクトル モーメントの計算を参照してください。

使用する周波数の範囲。'FrequencyLimits' と下限 f1 および上限 f2 を含む 2 要素ベクトルで構成されるコンマ区切りのペアとして指定します。単位はヘルツです。この指定により、スペクトル範囲のいずれかの端にあるデータの帯域を除外できます。

出力引数

すべて折りたたむ

条件付きスペクトル モーメント。timetable または行列として返されます。

モーメント推定の秒単位の時間。t は、内部のスペクトログラム計算で計算される時間のウィンドウ処理から得られます。スペクトログラム ウィンドウに必要な時間分解能は元のサンプル ベクトルより少なくなります。そのため、返される t のベクトルは入力データ ベクトルよりもコンパクトになり、momentS についても同様です。サンプル レートまたはサンプル時間によって時間情報が提供されている場合、t は最初の時間ウィンドウの中心から始まります。時間情報が duration または datetime の形式で指定されている場合、t は開始時間のオフセットを維持します。

詳細

すべて折りたたむ

条件付きスペクトル モーメント

非定常信号の条件付きスペクトル モーメントは、信号スペクトルの時間による変化を特徴付ける一連の時変パラメーターで構成されます。これらは、条件付き時間モーメントと時間-周波数の結合モーメントに関連しています。条件付きスペクトル モーメントは、周波数、与えられた時間、および周辺分布の積分関数です。条件付き時間モーメントは、時間、与えられた周波数、および周辺分布の積分関数です。時間-周波数の結合モーメントの計算は、時間と周波数の両方が変化する 2 重積分です[1][2]

各モーメントが特定の次数に関連付けられており、最初の 4 つの次数は 1) 平均、2) 分散、3) 歪度、4) 尖度の統計プロパティです。

tfsmoment は、信号 x の時間-周波数分布の order で指定された次数の条件付きスペクトル モーメントを計算します。この関数で実行される手順は次のとおりです。

  1. 関数 pspectrum を使用して入力のスペクトログラム パワー スペクトル P(t,f) を計算し、それを時間-周波数分布として使用します。使用される構文で既存の P(t,f) が与えられる場合、tfsmoment は代わりにそれを使用します。

  2. 信号の条件付きスペクトル モーメント ωmt を推定します。集中化しない場合は次を使用します。

    ωmt=1P(t)ωmP(t,ω)dω,

    ここで、m は次数、P(t) は周辺分布です。

    集中化された条件付きスペクトル モーメント μωm(t) の場合は、関数は次を使用します。

    μωm(t)=1P(t)(ωω1t)mP(t,ω)dω.

参照

[1] Loughlin, P. J. "What Are the Time-Frequency Moments of a Signal?" Advanced Signal Processing Algorithms, Architectures, and Implementations XI, SPIE Proceedings. Vol. 4474, November 2001.

[2] Loughlin, P., F. Cakrak, and L. Cohen. "Conditional Moment Analysis of Transients with Application to Helicopter Fault Data." Mechanical Systems and Signal Processing. Vol 14, Issue 4, 2000, pp. 511–522.

拡張機能

バージョン履歴

R2018a で導入