ディー・クルー・テクノロジーズ Blog

bookmark_borderディジタル信号処理~高校数学で理解する離散フーリエ変換⑥ 周波数成分の求め方3

こんにちは。今、日本のアスリートが国際舞台で躍動していますね。彼らアスリートのフィジカルサポートには可搬式の超音波診断装置が用いられていて、チームドクターが練習場等に診断装置を持ち込み、筋肉やじん帯などを可視化して、治療方針の策定に役立てているそうです。これら診断装置には信号処理技術が使われていますので、わが社の信号処理技術がもしやメダル獲得につながっているかもしれない!などと勝手な想像をしてしまいます笑

さて、これまでの記事でご紹介した、ディジタル信号処理の周波数成分の求め方のおさらいです。

離散フーリエ変換のおさらい

  • 正弦波の周波数を少しずつずらして内積を求めれば、全周波数成分が求められる。
  • ただし、cosとsinの内積は0(相関なし)になるので、cosと分析対象の内積、sinと分析対象の内積、それぞれの値を求める必要がある。
  • cosとsinそれぞれの内積で求めた値が、各周波数成分の大きさである。

ここまでがご理解いただければ離散フーリエ変換の本質はばっちりです。

いままでの記事での内積計算を実践してお分かりいただけたと思うのですが、cosとsinの内積をそれぞれ求めて合計するのは、いかんせん手間がかかります。なので、これをシンプルにする計算テクニックをお伝えします。まず離散フーリエ変換の計算テクニックとして必要な部分を中心に、オイラーの公式、虚数、複素数についてそれぞれ触れ、最後に公式を用いた計算の実践までお伝えいたします。

計算テクニックのポイント

離散フーリエ変換の計算テクニックのポイントは以下の4つです。

  • オイラーの公式の活用
  • 複素正弦波を導く
  • 複素正弦波の回転を視覚的に示す
  • 複素正弦波の内積を求める

オイラーの公式の活用

オイラーの公式は、フーリエ変換の計算テクニックにとって強力なツールです。世代によって高校カリキュラムではやっていないそうで、私の時代も範囲外でしたが、次の世代のカリキュラム改革で範囲内になったと聞いたことがあります。

公式は以下のように表されます。

eはネイピア数という定数です(詳しい説明はここでは割愛します)。θは実数(xと記述することもあります)です。オイラーの公式を使うと、右辺のcosとsinの2つの三角関数を、左辺の指数関数1つですっきり表すことができます。虚数jがあるので複素数の理解が多少は必要になりますが、それ以上に式をシンプルにしてくれるメリットがあります。

複素正弦波を導く

まず、オイラーの公式を利用しながら、周期的な波を回転で示す指数関数を導きます。

周波数fとは1秒間にf回同じことを繰り返す周期的な波のことですが、まずこの波を回転で示します。 1秒間に一回グルっと回すとは、360°/1秒=2×180°/1秒=2πfです。(角周波数といいます)

これをオイラーの公式に代入しますと、こうなります。

このときの左辺を、周期的な波を回転で示す指数関数、複素正弦波と呼びます。

複素平面で複素正弦波の回転を示す

次に、この複素正弦波の回転を視覚的イメージするために、縦軸を虚数軸j、横軸を実数軸tとする特殊な平面をご用意しました。これは虚数と実数で成り立つ複素数を理解しやすくするために作られた表現で複素平面と呼びます。

ここに複素正弦波を表すと、図1の感じになります。これを見るとお分かりのように、複素正弦波は複素平面上で、0を中心にして2πftの増加に伴い、

図1

複素平面上の円周をぐるぐると回る周期関数となります。2πftのfの値を増やせば、同じtの変化量(Δt)に対してより大きく回転しますので、周期関数の回転速度もより速く(周波数がより高く)なります。複素正弦波は、指数に虚数がついているため取っつきにくい印象の式ですが、このように複素平面上でぐるぐる回る図にすると理解しやすく感じられたらうれしいです。

いかがでしたか? 次回は今日の基本情報踏まえ、離散フーリエ変換の公式で複素正弦波との内積を計算していきます。

離散フーリエ変換の公式

bookmark_borderディジタル信号処理~高校数学で理解する離散フーリエ変換⑤ 周波数成分の求め方2


こんにちは。

さて、前回は入力信号の周波数を少しずつずらして正弦波との内積を求めれば、あらゆる周波数成分の大きさを成分検出できそうということでした。前回記事はこちらです。

では検証してみましょう。

ずらした入力信号の周波数成分を求める

まず、2つの入力信号を時間で少しずらします。それぞれ、

・入力信号① 周波数1Hz(振幅1) :0 秒のとき 値1 → 値0 これを①´とする

・入力信号② 周波数2Hz(振幅0.5):0 秒のとき 値0.5 → 値0 これを②´とする

それぞれ、図1ような波形に変わります。少し時間だけずらしただけなのですが、波形にするとずいぶんと違いますね。

図1

なお、検出用の正弦波は前回と同じ ④cos(2Hz)です。

cos(2Hz)

ずらした信号とcosとの内積が0?

これら3つの波形を、前回同様、内積を求める時間単位の一覧表に展開して、内積を計算してみましょう。入力信号①´とcos③、入力信号①´とcos③を時間毎に掛け算していき、最後にそれらの和を求めるのでしたね。さて結果はどうなったでしょうか。

図3

おや? 内積が0になってしまいました。。。

周波数の違う①´はさておき、②´の2Hzの成分は一体どこに消えてしまったのでしょうか?

考察:内積が0になった理由を考えてみる

もちろん、2Hzの信号自体が消えてしまったわけではありません。

実は2Hzの信号②´はずらした結果、sin波になっています。そして重要なのがsinとcosの関数同士の内積は0(相関なし)になるという性質です。専門的には「関数の直交性」といいます。(イメージ的には直交するベクトル同士の内積が0になる「ベクトルの直交性」と非常によく似ています。あくまでイメージですが)

数式で証明しましょう。高校数学でも出てきた、sinとcosの積とsinの2倍角の公式で考えます。

左辺はsinとcosの内積です。sinΘとcosΘの積を全ての角度(0から2πの2周期分)にわたって合計することを意味します。それを2倍角の公式で変形しますとsin2Θ(正弦波sinの2周期分)の総和となります。右辺の正弦波2周期分のsin2Θの総和は、これ実際に計算すると0になりますので、右辺が0となり、左辺のsinΘcosΘの積の和である内積は、0(相関なし)になります。

関数の直交性は何を意味するの?

関数の内積が0=関数の直交性と、sin2Hzが検出できない問題がどうつながるの?という声がでそうですね。ここでお伝えしたかったのは、cosで成分検出できない波は、sinとの内積で検出が出来るということです。

色のディジタル表現をイメージすると案外わかりやすいかもしれません。カラーディスプレイでRGB方式がありますが、赤R緑G青Bの基本3色を256段階で配分してさまざまな色を表現できますね。信号処理では、直交性を持ち、性質が異なるsinとcosの関数2つでさまざまな信号成分が表現可能なんです。

また色で信号処理をたとえてしまいましたが(笑)、すべての波がsinとcosのたった2つの組み合わせで表現可能ということ。あらためてこのシンプルさが私はすごいなと思います。

cosでは検出できない周波数成分をsinで求める

ではsinとの内積であれば先ほどの信号が検出可能か念のためやってみましょう。入力信号①´②´の2つの信号と、sinとの内積を求めてみます。検出用に④´sin(2Hz)を用意し、周波数成分を求めてみます。

sin(2Hz)

内積を求めてみると、このようになります。

図4

結果、内積が求められました。周波数2Hzの信号をsin2Hzで成分検出できました。cosでは検出できない信号成分はsinで検出できるのです。

cos+sinの組み合わせでさまざまな信号を検出

さて、前回と今回の記事を通じてお伝えしたかったのは、直交性を持つcosとsinの三角関数のセットでさまざまな波の成分検出ができる。という事でした。

いかがでしたでしょうか?

ちなみに、この方式は検出する信号毎にcos成分とsin成分それぞれの計算結果を使わなければならないので扱いが面倒です。なので効率性を重視することが好きな私としては、普段もっと扱いが楽な方法で計算しています。

次回以降では、オイラーの公式や複素数を用いた、実用的な計算方法についてお伝えしていきますね。