アルゴリズム (STFT)

STFT入力された信号{ix(n)}をNセクションのスライドウィンドウに分割し、それぞれのセクションにFFTを実行します。さらに、

STFT\left \{x[n]\right \} \equiv X(m, \omega)=\sum_{n=-\infty}^\infty x[n]\omega [n-m]e^{-j\omega n}

ここで \omega (n) は、その範囲内で局所的な周波数成分を強調するスライドウィンドウを表します。


STFTは、次の手順で計算します。

  1. 入力信号をNセクションに分割します。常にウィンドウの長さに等しいnが適用されます。
  2. 選択したウィンドウスタイルが、抽出されたデータを増幅する際に利用されます。
  3. ウィンドウの長さFFTの長さのり小さい時、ウィンドウの両側に0が挿入されます。
  4. FTTはFTTセクションで算出されます。
  5. ユーザー定義の重複サイズのウィンドウに移動し、 インプットした信号の終了するまで、1から4までを繰り返します。
STFT algorithms overlap.png

STFTの結果は、N列とM行から構成される行列で、MとNはそれぞれ、

N=floor(\frac{DataSize-Window Size}{WindowSize-OverlapSize})+1\,\!

および、

M= \begin{cases} FFTLength/2+1, & \mbox{if input signal is real} \ FFTLength, & \mbox{if input signal is not real} \end{cases}

行列のj列目は、FFTのj番目のセクションとXの値がj番目のセクションの時間中点であることを示しています。Yの値はサンプル区間\Delta tの周波数で、Nはインプットされたデータポイントの数です。i番目の周波数は:

f_i=\frac i{N\Delta t}


サンプル間隔の自動計算について:

サンプル間隔<自動>を選択すると、Originがサンプル区間内で自動的に計算を行います。

自動的に計算されるサンプリング間隔は、時間データの増加の平均で、これは通常入力信号と結びついているXデータが使われます。結びついているX列が無ければ、行番号が使われます。Originが増加の平均を取得するのに失敗した場合、サンプリング間隔は1にセットされます。

ウィンドウ法

FFTで使用されるウィンドウ法を指定します。デフォルトのオプションはHanningです。

  • 四角形
    矩形ウィンドウ
    w[n] = \begin{cases} 1, & \mbox{if }0 \leq n \leq N-1 \ 0, & \mbox{otherwise } \end{cases}
  • Welch
    Welchウィンドウ
    w[n]=1-\left[ \frac{n-\frac 12(N-1)}{\frac 12(N+1)}\right] ^2\,\!
  • 三角
    Triangularウィンドウ
    奇数: w(n)=\frac 2{N+1}(\frac {N+1}2-|n+1-\frac {N+1}2|)
    偶数: w(n)=\frac 2N(\frac N2-|n+1-\frac {N+1}2|)
  • Bartlett
    Bartlettウィンドウ
    w[n]=\frac 2{N-1}\left[ \frac{N-1}2-\left| n-\frac{N-1}2\right| \right] \,\!
  • Hanning
    Hannウィンドウ:
    w[n]=\frac 12\left[ 1-\cos (\frac{2\pi n}{N-1})\right] \,\!
  • Hamming
    Hamming ウィンドウ:
    w[n]=0.54-0.46\cos (\frac{2\pi n}{N-1}) \,\!
  • Blackman
    Blackmanウィンドウ
    w[n]=0.42-0.5\cos (\frac{w\pi n}{N-1})+0.08\cos (\frac{4\pi n}{N-1}) \,\!
  • Gaussian
    Gaussianウィンドウ
    w[n]=exp(-0.5(Alpha( \frac{2n}{N-1}-1 ))^2) \,\!
    AlphaAlphaパラメータで指定されます。
  • Kaiser
    Kaiserウィンドウ
    w[n]=I(beta*\sqrt{1-(\frac{2n}{N-1}-1)^2}) / I(beta) \,\!
    I(ix)はBessel関数を示し、betaBetaパラメータで指定されます。

結果

  1. 複素結果
    各FFTセクションの複素FFT結果です。最初のパートが負の周波数の結果になるようにシフトされます。
  2. 振幅結果
    実部の片側入力信号と虚部の両側入力信号です。この定義は、FFTツールの振幅と同様です。両側の結果では、開始部分が負の周波数の結果になるようにシフトが使用されます。
  3. 振幅(dB)
    20\text{log}(\text{Amplitude})

時間
STFT結果の各FFTセクション時間は、各セクションの信号の時間間隔の中心に対応します。例えば、セクション間隔 (ti, ti+(N-1)*dt) では、STFT結果のFFTセクションの時間は、ti+(N-1)*dt/2 です。