データサイエンス・分析

FFT解析とは?【原理とグラフの見方を3ステップでわかりやすく解説】

どんな人に読んで欲しい?周波数分析したい人

 

どーも!エンジニア + データサイエンティスト / 2 =虎ぱぱです(*’ω’*)

 

機械メーカのエンジニアとして計測データの分析を主な生業としてます。

FFT解析を初めてやった時はもう訳がわからず地獄のような苦しみを味わいました。笑

始めてFFT解析を行う方が、飽きずに概要を掴めるように『式をなるべく使わずに』解説したいと思います。

 

私のキャリア、人となりが書いてありますので、こちらも併せて読んでみて下さい!!

高卒でもできる!副業と本業の掛け算【データサイエンティスト×ブログ×エンジニア】高卒だから年収が少ない。そんな時代はもう終わりです。色々な副業に挑戦しましたが、ブログが最強です。あなたが持っている技術は誰かが知りたいこと。データサイエンティストが自身の知識をブログに還元する話です。...

 

助手ミルク
助手ミルク
今回はFFT解析についてですね?この手法をマスターすると何に使えるんですか?

虎ぱぱ
虎ぱぱ
FFTはスペクトル解析の一種で、私は主に音や振動の分析につかってます!光の波長分析や電気工学の分野でも役に立つよ!

助手ミルク
助手ミルク
音や振動の分析?音や振動は”スペクトル”を持ってるってこと?

虎ぱぱ
虎ぱぱ
その通り。筋がいいね。君とは波長が合いそうだよ。

助手ミルク
助手ミルク
]…分析ミスってますね。

 

この記事を読むとFFT解析の概要がつかめます。こんな方におすすめ!!☟

  • 音や振動を分析する技術者の卵。PAさんなど

  • 機械学習やAIエンジニアでFFT解析を特徴量として扱う人

  • 分光学・電気工学系の研究者,学生さん

  • スペクトル解析っ調べたら難しい式ばかりで嫌になった人

 

 

FFT解析は現在様々なツールで実施できます。プログラミングで実施する場合も、関数を使えば簡単にできてしまいます。

なので、難しい演算を全て理解する必要はないと思います。

ただし、解析ツールを使用する上で、最低限抑えておかなきゃいけないポイントはあります。

この記事では極力、式を使わずFFTについてわかりやく説明していきます。

 

FFT解析って何?3ステップで解説

ステップ1 FFT=高速フーリエ変換 

 

 

FFTは『Fast Fourier Transform』の略語です。日本語にすると『高速フーリエ変換』です。

 

そのままの意味で、フーリエ変換を早く行うための手法です。

高速に『離散フーリエ変換』を行うアルゴリズムのことです

 

助手ミルク
助手ミルク
なんでフーリエ変換を早くする必要があるんですか?

虎ぱぱ
虎ぱぱ
測定機や分析装置に実装する場合は…演算を軽くする必要がある。フーリエ変換を早く処理できるように工夫したものがFFTなんだ。肉食いたい。

助手ミルク
助手ミルク
なるほど。じゃあフーリエ変換が何か知る必要がありそうね!(肉はどうでもいいけど)

 

 

ステップ2 フーリエ変換は周波数分析の手法

 

フーリエ変換は周波数分析=スペクトル分析の手法の一つです。

 

 

周波数分析の概要について説明しますが、そもそも周波数って何?という人はこちらを先に読んでもらいたいです!!

 

周波数の求め方 ヘルツ・特性・周期とは?【わかりやすく図解で解説】周波数ってよく聞くけどなに??って方多いと思います。実は身の周りに溢れていて誰もが触れてる『周波数』その特性や周期との関係、ヘルツって何?といった細かな疑問にお答えします。...

 

一応式に触れておきますが、フーリエ変換の元になっているのはフーリエ級数展開という手法です。

 

出展元:宇宙に入ったカマキリ さん

 

フーリエ級数展開はとても複雑な計算が必要で、複素数・三角関数を十分に理解してからでないと恐らく解けません。まずはできることが大切。理屈は後から学びましょう。とりあえず今は、ふ~ん。くらいに思っといてください。

 

助手ミルク
助手ミルク
周波数分析!?周波数を分析するってどういうことですか??

虎ぱぱ
虎ぱぱ
時系列データを周波数領域で捉えてわかりやすく示す手法だよ。

助手ミルク
助手ミルク
…ちょっと何言ってるかわからないです。

虎ぱぱ
虎ぱぱ
…まずはデータを見てみましょうか。

 

 

下手に専門用語を並べて説明すると余計わからなくなると思いますので、データを使って説明します。

 

 

 

 

横軸が時間なので…1秒間に5回の山!!これは5Hzのsin波です。当ブログ上では何回も登場してます。

 

 

この波形をフーリエ変換するとこうなります。

 

 

横軸は周波数、縦軸は振幅です。縦軸は解析前と基本的に変わりません。(縦軸の値は解析条件により異なるので注意。この場合はリニア)

 

 

さっきの横軸が時間のグラフで周波数がいくつ?というのを調べようとすると、1秒間あたりの波の数を数えるしかありませんでしたが、フーリエ変換を行うことで、データの周波数と振幅が一目瞭然になりました。

 

助手ミルク
助手ミルク
横軸時間のデータで数えるのはナンセンスだし、主観が入って正しいかわからないですよね!?

虎ぱぱ
虎ぱぱ
そう!!だから周波数分析があるんだよ!!しかも世に存在する物理現象のデータはただのsin波なんてことはないからね!!音や振動なんかの分析にはとても役立つんだよ。

 

 

ステップ3 周波数分析の活用『音』を例に説明

 

 




様々なジャンルの勉強に対して言えますが、何のために使うかを理解しないと、内容を理解し辛いですよね?

ここでは周波数分析≒フーリエ変換は世間でどのようなことに活用されているかを説明します。


IoTや故障診断全盛期の今、工学系のデータ分析で、音や振動の分析は外せないのではないでしょうか。

この世に音や振動ってたくさん存在しますよね?実は音と振動はほとんど同じです。伝達方法が違うだけです。


音が空気中を伝わるのに対し、振動は物体を通じて伝わる。そんなイメージです。

 

楽器の音も全て周波数をコントロールすることで成り立っています。周波数が低い=音が低いということです。

 

 

この動画をご覧いただくと、わかりやすいと思います。周波数によって音が変わります。(再生の際は音量に注意してください!)


音は人の声や、車の走行音など、身近なところにあふれてますね。


こういう音は必ずいくつかの周波数が混ざり合ってできています。

助手ミルク
助手ミルク
周波数が混ざり合ってる??

虎ぱぱ
虎ぱぱ
そう。1つの周波数で形成される音は存在しません。わかりやすい例があったので、引用して説明します。

 

出展元:エー・アンド・ディー/FFTアナライザ入門

 

 

この図を例にとって説明します。

 

左のグラフはいくつかの周波数が混ざった音の波形だと思って下さい。中央の波はそれを分解したものです。

 

つまり左のグラフのような波形は、実は中央のグラフのように様々な周波数の波が混ざってできたものということです。

 

右のグラフをそれをフーリエ変換したものです。2Hz・4Hz・6Hzにピークが立っていて、この波形は3つの周波数から成り立っていることがわかります。

 

例えばギアから発生する音はギアのかみ合いの周波数を計算すれば、推測できます。6Hzがそれだとしましょう。(実際は歯数×回転数(rps)なので、もっと高いです…突っ込まないで笑)

 

ギアを回すモータの音も出るかもしれません。これを4Hzだとします。

 

2Hzは不明もしくはノイズだとします。

 

例えば、ギアが壊れて空回りしたらどうでしょう。

 

モータの音の周波数4Hzは消えません。でもギアのかみ合い周波数の6Hzはなくなりますよね?

 

逆に言うと、ギア設計からの噛み合い周波数を把握して、周波数分析を行えば、ギアが壊れているかどうかがわかる。つまり診断ができるということになります。

 

助手ミルク
助手ミルク
すごーい。感動!!

虎ぱぱ
虎ぱぱ
実際はモータの回転数が変わったり、周囲の音がノイズになったり…色々な外乱を消す工夫も必要だよ。

助手ミルク
助手ミルク
ふ~ん。でもフーリエ変換でなんとかなるんじゃないんですか?

虎ぱぱ
虎ぱぱ
それだけでできるならデータサイエンティストもエンジンニアもいらないの!!そこから先が大変なの!

助手ミルク
助手ミルク
機嫌が悪いわね…今夜は奮発してジャッカルのお肉ね…

 

 

AIエンジニア・データサイエンティストへの道

私の場合、プログラミングの基礎はほぼ独学で学んでます。勉強法に興味のある方は読んで下さい!!

Pythonの基礎は独学で学べる!初心者はまず無料動画で学ぼう!Pythonの基礎は初心者でも無料動画で独学で学ぶことができます!スクールなどに通う前にまずは独学でやってみましょう!!Pythonの環境構築から基礎のきを勉強する方法までを紹介します。...

 

ですが…AIエンジニアやデータサイエンスの分野は独学で学ぶのは少し難しいと思います。なぜなら、プログラミングと違い、答えがないものを追うことがほとんどだからです。

 

勉強法を知るためにAIエンジニアになるためのロードマップを作りました。

PythonでAIの作り方を学ぶ最短ルート【学習ロードマップ-2020年度版】 print("HelloWorld") #Python初心者がAIを作れるようになるためのロードマップ# Pythonを使ってA...

 

データサイエンティストを目指す方にはこちらをお勧めしてます。

 

そもそも少ないデータサイエンティスト専門の講座。その中でも社会人を対象にしている講座は少ないです。このデータミックスさんでは

 

1. データサイエンティストとしての経験豊富な講師が実務視点でレクチャー
2. 少人数制で受講生一人一人の強みや弱みを把握したうえでの指導
3. 多くのケーススタディなどを取り扱い実践的なスタイルで実務に活きる講義内容
4. 様々な業界・職種の受講生と授業だけでなく、勉強会やイベントで交流ができる
5. 卒業後も継続したフォローアップ体制。OG・OBネットワーク。
6. 転職希望者への転職支援。

 

という方針でカリキュラムを実施しており、実際のケーススタディを基に講義を行うため、答えがあることを学べるのが魅力です。詳しい内容は無料説明会で公開しているようです。また、アフターケアもしっかりされており、本気で転職を目指す方にももお勧めできます。

まとめ FFT解析のポイント

 

  • FFTは『Fast Fourier Transform』の略語。日本語にすると『高速フーリエ変換』フーリエ変換を実装するために演算を軽くしている。



  • フーリエ変換を行うことで周波数領域でデータを分析できる。



  • 周波数領域で分析を行うことにより、音や振動の特徴が把握でき、診断や特徴把握に繋がる。

 

次回は実際に音のデータをフーリエ変換する場合にフォーカスした記事を書きます。フーリエ変換をPythonで実施する方法の記事も書く予定です。そこまで読めば、あなたもフーリエ変換ができちゃいます!

 

座右の銘は『明日は明日の風が吹く』

 

虎ぱぱでした♪

PythonでAIを作ってみたい⇒誰でも勉強すればできる?
虎ジュニア
虎ジュニア
ぱぱー僕もAI作ってみたいよ~機械学習教えてよ~
虎ぱぱ
虎ぱぱ
ジュニアにはまだ早いよ。大人になったらね~
助手ミルク
助手ミルク
ちょっ…いつも挑戦がどうとか言っときながら…子供の夢を奪う気!?AIは誰でも作れるんじゃなかったの!?
虎ぱぱ
虎ぱぱ
そりゃ…いつも言ってる通り、正しく学べば誰でも作れますよ!!(そうは言ってもジュニアは3歳だぞ。)