🙋振動解析でFFTってよく使うらしいんですが、何をやってるのか全然わかりません。時系列データを「周波数」に変換するってどういうことですか?
🎓大まかに言うと「この複雑な振動の中に、どの周波数の波がどのくらいの強さで含まれているか」を分解する計算だよ。例えばエンジンの振動を録ったデータを FFT にかけると、「50Hz のピーク」=燃焼周波数、「200Hz のピーク」=歯車の噛み合い周波数って感じで原因が見えてくる。
🙋窓関数って矩形窓とハニング窓で結果が全然違いますね。これ何が起きてるんですか?
🎓FFT は「有限長のデータが無限に繰り返す」と仮定して計算する。矩形窓は端でデータをブツ切りにするから、端で急激な変化が生じてスペクトルが滲む「リーク」が起きる。ハニング窓は端をゆっくりゼロに落とすことで不連続をなくす。ピークの鋭さ vs リーク量のトレードオフで窓を選ぶんだ。
🙋このツールの信号は200 Hzまでですが、もしサンプリング周波数1024 Hzで600 Hzの信号を測ったらどうなりますか?
🎓それがエイリアシング(折り返し歪み)!ナイキスト周波数は fs/2=512Hz なのに、それを超える 600Hz の成分は 1024-600=424Hz として現れる。本来ないはずの周波数にピークが出るから非常に厄介。実際の計測では ADC の前にアンチエイリアシングフィルタ(ローパス)を入れて fs/2 以上をカットするのが常識だよ。
🎓構造解析では実験モーダル解析(EMA)が典型例。ハンマーで構造物を叩いて加速度を計測し、入力と応答の FFT 比(伝達関数)から固有振動数・減衰比・モード形状を求める。FEM の固有値計算結果との比較(コリレーション)に使うんだ。騒音・振動(NVH)解析でも必須の手法だよ。
❓ よくある質問
FFTのサンプル数はなぜ2の累乗が多いのですか?
クーリー・テューキーFFTアルゴリズムはN=2^k(2の累乗)のときに計算を再帰的に分割して O(N log N) を実現します。任意長でも動作するアルゴリズム(例:Rader-Brenner)はありますが、2のべき乗が圧倒的に高速です。
デシベル(dB)スケールはなぜ使われますか?
音響・振動のダイナミックレンジは 10⁶ を超えることがあります。線形スケールだと小さなピークが見えなくなります。dB = 20 log₁₀(X/X_ref) とすることで 120dB のダイナミックレンジを均一に表示できます。
短時間フーリエ変換(STFT)とウェーブレット変換の違いは?
FFTは定常信号を前提としますが、非定常信号(周波数が時間変化)には短時間FFT(STFT)が有用です。ウェーブレット変換は高周波は時間分解能を高く、低周波は周波数分解能を高くするため、衝撃信号や音声解析に適しています。
ゼロパディングとは何ですか?
信号の末尾にゼロを追加してサンプル数を増やしてからFFTをかけることです。これにより周波数分解能Δf=fs/Nが見かけ上向上し、スペクトルが滑らかになります(実際の分解能は増えませんが補間効果があります)。
FFTスペクトル解析ツールとは
FFTスペクトル解析ツールの物理モデルでは、入力信号を離散フーリエ変換(DFT)の高速アルゴリズムであるFFTを用いて周波数領域へ変換します。連続時間信号 \( x(t) \) をサンプリング周期 \( T_s \) で離散化した系列 \( x[n] \) に対し、N点FFTは次式で定義されます。
$$
X[k] = \sum_{n=0}^{N-1} x[n] \, e^{-j 2\pi k n / N}
$$
ここで \( k \) は周波数ビン番号であり、対応する物理周波数は \( f_k = k / (N T_s) \) です。しかし、有限長のデータを切り出す際に生じるスペクトルリークを抑制するため、窓関数 \( w[n] \) を乗算します。例えばハニング窓は \( w[n] = 0.5 - 0.5 \cos(2\pi n / (N-1)) \) で与えられ、適用後のスペクトルは次式となります。
$$
X_w[k] = \sum_{n=0}^{N-1} x[n] \, w[n] \, e^{-j 2\pi k n / N}
$$
また、サンプリング周波数 \( f_s = 1/T_s \) の半分を超える周波数成分はエイリアシングを引き起こすため、本ツールでは入力合成波形の周波数設定とサンプリング条件を変更することで、その影響をリアルタイムに観察できます。窓関数の選択により周波数分解能とリーク低減のトレードオフを体感し、エイリアシングの発生条件を理解することが可能です。
よくある質問
ハニング窓はスペクトルリーク低減に汎用的で、周波数分解能と振幅精度のバランスが良いです。矩形窓は分解能が高いがリークしやすく、周波数が整数倍の周期信号向けです。目的に応じて切り替えて比較してください。
サンプリング周波数が信号の最高周波数の2倍未満の場合、高周波成分が低周波に折り返って見える現象です。ツールでは入力波形の周波数をサンプリング周波数の半分(ナイキスト周波数)以下に設定することで防げます。
有限長の信号を切り出すと、両端で波形が不連続になるため、本来ない周波数成分が現れます。解析区間(N/fs 秒)にちょうど整数周期が入らない周波数、つまり周波数分解能 Δf の整数倍でない周波数で起きます。ツールで矩形窓を選び、例えば fs=1024 Hz(Δf=2 Hz)で f₁=51 Hz にすると、ピークが広がる様子を確認できます。
縦軸は各周波数ビンの複素スペクトルの絶対値を、窓関数のコヒーレントゲインで補正して正規化した値です。そのため、周波数が Δf の整数倍の正弦波なら、どの窓関数でも元の振幅(例:1.00)がそのまま読めます。整数倍でない周波数ではリークでピークが下がるため、振幅を正確に読むにはフラットトップ窓などの補正手法が使われます。
実世界での応用
産業での実際の使用例
自動車業界では、エンジンやモーターの振動解析にFFTが欠かせません。例えば、ハイブリッド車のインバーターではスイッチングノイズの周波数成分をFFTで特定してEMC対策に役立て、航空機エンジンのタービンブレードでは回転に伴う共振周波数をスペクトル解析して疲労破壊のリスクを評価します。窓関数を適切に選ぶ(ハニング窓など)ことでスペクトルリークを抑え、異常診断の精度を高めます。
研究・教育での活用
大学の電気・機械工学の実験や信号処理の講義では、音響信号や振動データの周波数特性を理解する題材として扱われます。矩形波のFFTに現れるギブズ現象やエイリアシングの影響を確かめ、窓関数の種類を変えながら周波数分解能と振幅精度のトレードオフを体感的に学べます。
CAE解析との連携や実務での位置付け
CAE(例:ANSYS、COMSOL)で計算した過渡応答波形の後処理でもFFTは基本の道具です。例えば、構造解析で得た応力波形をFFTして共振周波数を特定し、設計変更の指標にします。実験データとCAE結果の相関検証(Model Updating)でも、スペクトルリークを抑える窓関数の選択が解析精度を左右します。本ツールはその考え方を確かめるための学習用ツールです。
よくある誤解と注意点
「窓関数をかけさえすればスペクトルリークは完全に防げる」と思いがちですが、実際は窓関数はリークを低減するものであり、完全に除去できるわけではありません。特に非整数周期で切り出した信号では、どの窓関数を使っても周波数成分が隣接ビンに漏れ出るため、振幅の正確な読み取りには注意が必要です。
「サンプリング周波数の半分(ナイキスト周波数)までは全て正しく表示される」と思いがちですが、実際はアンチエイリアシングフィルタが不十分な場合、ナイキスト周波数付近の信号は折り返し歪み(エイリアシング)の影響を受けます。実務では、解析したい最高周波数に対し、サンプリング周波数を2.5〜5倍程度に余裕を持たせることが推奨されます。
「FFTの分解能はサンプリング点数を増やせば無限に向上する」と思いがちですが、実際は時間窓長が長くなると非定常な信号の時間変化を見逃すトレードオフがあります。周波数分解能と時間分解能は反比例の関係にあるため、目的に応じた適切な窓長の選択が重要です。
使い方ガイド
- 「成分1 周波数 f₁」「成分2 周波数 f₂」で2つの正弦波の周波数を設定します(1〜200 Hz、例:50 Hz と 150 Hz)
- 「成分1 振幅 A₁」「成分2 振幅 A₂」で各成分の振幅を設定し(0〜2、例:1.0 と 0.5)、「ノイズレベル」で雑音を加えます
- サンプリング周波数(512/1024/2048 Hz)を選ぶと、時系列信号と FFT 振幅スペクトルがリアルタイムで更新されます
- 窓関数(矩形・ハニング・ハミング・ブラックマン)を切り替えて、スペクトルリークの違いを確認します
具体的な計算例
50 Hz(振幅1.0)と150 Hz(振幅0.5)の合成波を、サンプリング周波数1024 Hz で解析します。本ツールの FFT サイズは N=512 点なので、周波数分解能は Δf=fs/N=2.0 Hz です。振幅は窓の補正を含めて |X[k]| を正規化しているため、主ピークは 50 Hz・振幅≈1.00 と表示されます。ハニング窓を使うとスペクトルリーク(隣のビンへの漏れ込み)が減り、サイドローブは約−31 dB に抑えられます。ナイキスト周波数は fs/2=512 Hz なので、150 Hz の成分まで正しく解析できます。
実務での注意点
- 回転機械の診断で 1X(回転周波数)と 2X を同時に見る場合、窓関数によってメインローブの幅(見分けられる周波数の近さ)とサイドローブの高さが変わるため、目的に応じて使い分けます
- 電力系統の 50/60 Hz とその高調波を解析する場合は、解析区間が周期の整数倍にならないとスペクトルリークで振幅が小さく読めるため、窓関数をかけるか区間を周期に合わせます
- サンプリング周波数は、測定したい最高周波数の2倍(ナイキスト定理)を必ず超えるように設定してください。それ以下では高い成分が低い周波数に折り返して見えます(エイリアシング)