アルゴリズム (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は、次の手順で計算します。
- 入力信号をNセクションに分割します。常にウィンドウの長さに等しいnが適用されます。
- 選択したウィンドウスタイルが、抽出されたデータを増幅する際に利用されます。
- ウィンドウの長さがFFTの長さのり小さい時、ウィンドウの両側に0が挿入されます。
- FTTはFTTセクションで算出されます。
- ユーザー定義の重複サイズのウィンドウに移動し、 インプットした信号の終了するまで、1から4までを繰り返します。
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) \,\!\]
- AlphaはAlphaパラメータで指定されます。
- Kaiser
- Kaiserウィンドウ
- \[w[n]=I(beta*\sqrt{1-(\frac{2n}{N-1}-1)^2}) / I(beta) \,\!\]
- I(ix)はBessel関数を示し、betaはBetaパラメータで指定されます。
結果
- 複素結果
各FFTセクションの複素FFT結果です。最初のパートが負の周波数の結果になるようにシフトされます。 - 振幅結果
実部の片側入力信号と虚部の両側入力信号です。この定義は、FFTツールの振幅と同様です。両側の結果では、開始部分が負の周波数の結果になるようにシフトが使用されます。 - 振幅(dB)
\(20\text{log}(\text{Amplitude})\)
時間
STFT結果の各FFTセクション時間は、各セクションの信号の時間間隔の中心に対応します。例えば、セクション間隔 (ti, ti+(N-1)*dt) では、STFT結果のFFTセクションの時間は、ti+(N-1)*dt/2 です。
/STFT_algorithms_overlap.webp?v=3f4eaa54dc070f3)