Main Content

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

tftmoment

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

説明

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

[momentT,f] = tftmoment(___) は、momentT のモーメント行列に関連付けられた周波数ベクトル f を返します。

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

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

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

すべて折りたたむ

時系列の条件付き時間モーメントをプロットのみの手法とデータを返す手法を使用してプロットします。

故障による周期的な共振があるシステムについてのシミュレートされた振動の測定値で構成されるデータを読み込んでプロットします。x は測定値のベクトル、fs はサンプリング周波数です。

load tftmoment_example x fs

ts=0:1/fs:(length(x)-1)/fs;
figure
subplot(1,2,1)
plot(ts,x)
xlabel('Time in Seconds')
ylabel('Measurement')
title('Simulated Vibration Measurements')

関数pspectrumで 'spectrogram' オプションを使用して、時間に対する周波数成分を表示します。

subplot(1,2,2)
pspectrum(x,ts,'spectrogram')

Figure contains 2 axes objects. Axes object 1 with title Simulated Vibration Measurements, xlabel Time in Seconds, ylabel Measurement contains an object of type line. Axes object 2 with title Fres = 16.3487 Hz, Tres = 157 ms, xlabel Time (s), ylabel Frequency (Hz) contains an object of type image.

スペクトログラムから、最初のバーストが 100 Hz、2 番目のバーストが 300 Hz にあることがわかります。300 Hz のバーストの方が 100 Hz のバーストよりも 70 dB 強くなっています。

出力引数なしのプロットのみの手法を使用して fs を指定し、2 次時間モーメント (分散) をプロットします。

figure
order = 2;
tftmoment(x,fs,order);title('Second Temporal Moment')

Figure contains an axes object. The axes object with title Second Temporal Moment, xlabel Frequency (Hz), ylabel $ muSubScript t( SuperScript 2 baseline omega )$ contains an object of type line.

プロットの 100 Hz と 300 Hz に、スペクトログラムで示された引き起こされる共振に対応する 2 つの明確な特徴があります。モーメントの振幅はスペクトルの結果よりもはるかに近くなっています。

次に、既に構成したタイムライン ts を使用して最初の 4 つの時間モーメントを求めます。今回は、モーメント ベクトルと関連する周波数ベクトルの両方を返す形式を使用します。次数の配列を入力引数の一部として組み込みます。

[momentT,f] = tftmoment(x,ts,[1 2 3 4]);

momentT の各列に 1 つの入力次数に対応するモーメントが格納されます。

momentT_1 = momentT(:,1);
momentT_2 = momentT(:,2);
momentT_3 = momentT(:,3);
momentT_4 = momentT(:,4);

4 つのモーメントを別々にプロットして形状を比較します。

figure
subplot(2,2,1)
plot(f,momentT_1)
title('First Temporal Moment — Mean')
xlabel('Frequency in Hz')

subplot(2,2,2)
plot(f,momentT_2)
title('Second Temporal Moment — Variance')
xlabel('Frequency in Hz')

subplot(2,2,3)
plot(f,momentT_3)
title('Third Temporal Moment — Skewness')
xlabel('Frequency in Hz')

subplot(2,2,4)
plot(f,momentT_4)
title('Fourth Temporal Moment — Kurtosis')
xlabel('Frequency in Hz')

Figure contains 4 axes objects. Axes object 1 with title First Temporal Moment — Mean, xlabel Frequency in Hz contains an object of type line. Axes object 2 with title Second Temporal Moment — Variance, xlabel Frequency in Hz contains an object of type line. Axes object 3 with title Third Temporal Moment — Skewness, xlabel Frequency in Hz contains an object of type line. Axes object 4 with title Fourth Temporal Moment — Kurtosis, xlabel Frequency in Hz contains an object of type line.

この例のデータでは、故障による共振の特徴が 2 次と 4 次の時間モーメントで最も明確に現れています。

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

既定のオプションを使用して既に生成されているパワー スペクトログラムを入力します。結果の時間モーメントのプロットを tftmoment で既定の pspectrum のオプションを使用して独自に生成されたものと比較します。結果は同じになるはずです。

故障による周期的な共振があるシステムについてのシミュレートされた振動の測定値で構成されるデータを読み込みます。p は前に計算したスペクトログラム、fptpp に関連付けられた周波数と時間のベクトル、x は元の測定値のベクトル、fs はサンプリング周波数です。

load tftmoment_example p fp tp x fs

スペクトログラムとそれに関連する周波数と時間のベクトルを使用して 2 次時間モーメントを求めます。モーメントをプロットします。

[momentT_p,f_p] = tftmoment(p,fp,tp,2);
figure
subplot(2,1,1)
plot(f_p,momentT_p)
title('Second Temporal Moment using Input Spectrogram ')

次に、元のデータとサンプル レートを使用して 2 次時間モーメントを求めてプロットします。

[momentT,f] = tftmoment(x,fs,2);
subplot(2,1,2)
plot(f,momentT)
title('Second Temporal Moment using Measurement Data')

Figure contains 2 axes objects. Axes object 1 with title Second Temporal Moment using Input Spectrogram contains an object of type line. Axes object 2 with title Second Temporal Moment using Measurement Data contains an object of type line.

予想どおり、どちらにも既定の pspectrum のオプションが使用されているためプロットは一致します。この結果は、カスタマイズしていなければ 2 つの手法が等価になることを示しています。

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

機械の一部についての測定の読み取り値と時間の情報を格納した単一の 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 は次元 TimeVariables で構成されており、変数は x_inner1 だけです。

timetable のデータの 2 次と 4 次の条件付き時間モーメント (order = [2 4]) を求めます。

order = [2 4];
[momentT_xt_inner1,f] = tftmoment(xt_inner1,order);
size(momentT_xt_inner1)
ans = 1×2

        1024           2

時系列ベクトル入力からモーメントを取得する場合と同じように、momentT_xt_inner1 の列で時間モーメントが表されます。

返された周波数ベクトル f に対するモーメントをプロットします。

momentT_inner1_2 = momentT_xt_inner1(:,1);
momentT_inner1_4 = momentT_xt_inner1(:,2);

figure
subplot(2,1,1)
plot(f,momentT_inner1_2)
title("Second Temporal Moment")

subplot(2,1,2)
plot(f,momentT_inner1_4)
title("Fourth Temporal Moment")
xlabel('Frequency in Hz')

Figure contains 2 axes objects. Axes object 1 with title Second Temporal Moment contains an object of type line. Axes object 2 with title Fourth Temporal Moment, xlabel Frequency in Hz contains an object of type line.

入力引数

すべて折りたたむ

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

1100<Median time intervalMean time interval<100.

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

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

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

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

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

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

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

  1. 平均 (時間データの場合は "群遅延")

  2. 分散

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

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

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

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

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

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

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

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

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

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

1100<Median time intervalMean time interval<100.

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

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

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

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

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

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

名前と値の引数

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

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

例: 'Centralize',false,'TimeLimits',[20 100] は、信号の 20 秒から 100 秒までの範囲の部分について非集中条件付き時間モーメントを計算します。

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

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

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

例: momentT = tftmoment(x,2,'Centralize',false).

時間の範囲。'TimeLimits' と下限 t1 および上限 t2 を含む 2 要素ベクトルで構成されるコンマ区切りのペアとして指定します。単位は ts と同じで、データ型は次のとおりです。

  • fs またはスカラーの ts が指定されている場合や ts が数値または duration ベクトルの場合は数値または duration

  • tsdatetime ベクトルとして指定されている場合は数値、duration、または datetime

この指定により、より長いデータ セットからデータの時間セクションを抽出できます。

出力引数

すべて折りたたむ

条件付き時間モーメント。列が時間モーメントを表す行列として返されます。

momentT は、入力データが timetable xt、時系列ベクトル x、スペクトログラム データ p のいずれであるかに関係なく、1 つ以上の列をもつ行列です。

モーメント推定のヘルツ単位の周波数。double ベクトルとして指定します。例については、時系列ベクトルの条件付き時間モーメントのプロットを参照してください。

詳細

すべて折りたたむ

条件付き時間モーメント

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

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

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

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

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

    tnω=1P(ω)tnP(t,ω)dt,

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

    集中化された条件付き時間モーメント μtn(ω) の場合は、関数は次を使用します。

    μtn(ω)=1P(ω)(tt1ω)nP(t,ω)dt.

参照

[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.

拡張機能

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

バージョン履歴

R2018a で導入