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

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

さあ、今日は複素正弦波を使って具体的に離散フーリエ変換の計算の仕方をお伝えします。

離散フーリエ変換の公式

再び、離散フーリエ変換の公式です。

左辺のX(k)は、ある周期の波kに対し計算実施した結果で、全部でN個分のデータとなります。

右辺のx(n)は、”0~N-1の離散フーリエ変換対象の信号”です。 このブログではx(n)を”時刻 0~N-1の時間信号”のイメージで計算してましたが、実際は時刻に限らず、等間隔に並んだ離散信号なら何でもよいのでこの表現がしっくりきます。右辺の計算は、たとえばNが8であれば、”0から7までの8個の離散フーリエ変換対象の信号”に、複素正弦波(この公式では便宜上指数に-が付きますが内積計算に影響ありません)を乗じて各信号との内積を求め、それらをΣ(合計)することを意味します。

離散フーリエ変換公式による計算

N=8の時を例として計算方法をお伝えします。

k=0の時、各要素の計算はこんな感じになります。各要素は複素数になるので、複素平面上の円回転でも表現できます。視覚的に理解いただくために要素の下に掲載しました。

こんな感じになります。ちなみにX(0)のときはeの指数部が常に0になります。

次に他の7個分を計算します。kの値を変えるとこのとおり、回転速度が変わります。どう変わるのか視覚的に示すために複素平面図に矢印で示してみました。一部省略しましたが、kを0→7まで増やしていくとこんな感じになります。

ここで最もお伝えたいことは、kの値が低いほど回転が遅く、周波数も低くなることと、逆にkの値が高いほど回転も速く、周波数は高くなるということです。

三角関数を使わない、シンプルな離散フーリエ変換の計算テクニックとは、このように分析対象の波に対して、低い周波数から少しずつ高いものにずらして複素正弦波との内積を取る。その計算結果から周波数成分を見つけていくというアプローチになります。

私の離散フーリエ変換の公式を使った計算テクニックとは以上のようなものですが、いかがでしたでしょうか? このブログ全体を通じてディジタル信号処理や離散フーリエ変換について皆さまの関心が高まったり、ご理解が深まれば、大変嬉しく思います。

最後に、私も携わった信号処理技術を活用したディ―・クルーのソリューションを2つご紹介します。

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成分それぞれの計算結果を使わなければならないので扱いが面倒です。なので効率性を重視することが好きな私としては、普段もっと扱いが楽な方法で計算しています。

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


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


こんにちは。

前回までのブログでは、

・音や光など、どんな物理現象の「波」も、周波数の異なる”信号”の組み合わせでできていること。

・高校数学で学んだ三角関数と内積で「波」がどんな信号で構成されているのか検出できること。

これがフーリエ解析の前提であることをお伝えしました。

ある「波」から特定の信号を検出することを、”周波数成分を求める”とも言います。今日は、三角関数(正弦波)との内積を用いれば、「波」の周波数成分をもとめることができることをお示しします。

1Hzの周波数成分を求める

手始めに、図1のような入力信号①周波数1Hzで振幅1 入力信号②2Hzで振幅0.5 の特性の異なる2つの信号波を用意しました。※ 理解しやすくするために単純な振幅の信号にしています。

図1

次に、計算のために1秒間で8つのタイミングを取り、図2に一覧表にしました。

図2

また、これらの信号が検出ができているかを調べる正弦波として③1Hzのcosを用意しました。

図3

入力信号①とcos③、入力信号①とcos③が相関関係にあるかどうかは、内積を求めることで検出できます。

内積の式のおさらい

ここで、前回お伝えした内積の式を思い出してください。

nを時間とみなせば、信号処理的に内積は信号Aと信号Bの相関を求めていることと同じになります。」とお伝えしました。これを今回のお題に当てはめますと、入力信号①とcos③の各時間の積の和、 入力信号②とcos③の各時間の積の和が、 それぞれの内積①✖③、②✖③を求めていることと同じになりますね。

では①✖③から実際にやってみましょう。

時間0秒 : 1 ✖ 1 = 1   0.125秒: 1/√2✖1/√2 =1/2  0.25秒:0✖0=0 … こんな感じです。

計算結果をさっきの一覧表に追加してみますとこんな感じになります。

図4

右端赤枠に①✖③、②✖③の積の和の合計(横に足していきます)で求められる内積を示しました。

結果は、①周波数1Hzの入力信号と③との内積が4、②周波数2Hzの入力信号と③との内積が0でした。つまり⓵と③では相関があるので信号を検出できましたが、②と③は合計0なので相関が無いため、信号は検出されませんでした。

③cos1Hz用いて①の周波数1Hzの成分だけをうまく検出できましたね!

次に2Hzの正弦波(cos)を使い、同じように成分を求めてみます。

2Hzの周波数成分を求める

次に正弦波の周波数を少しずらして、入力信号①、②の周波数成分を求めてみます。

ずらした正弦波を④cos2Hzとして、用意しました。

図5

1Hzの時と同じように、入力信号①との内積①✖④、入力信号②との内積②✖④の和を求めてみると、図6のようになりました。

図6

結果は、①周波数1Hzの信号に対しては内積が0、②周波数2Hzの信号に対しては内積が2です。

④を用いて、今度は②周波数2Hzの成分だけをうまく検出することができました!さらにこの値2は信号②の振幅に比例もしています。

周波数をずらすことの意味

これらの結果から、周波数を少しずつずらして正弦波との内積を求めれば、あらゆる周波数成分の大きさを検出できそうだな、と感じられると思います。

果たして本当に検出できるのか、次回はそれを検証してみましょう。


bookmark_borderディジタル信号処理~高校数学で理解する離散フーリエ変換③ 数式と4つの前提 


こんにちは、狂右衛門(くるえもん)です。

前回、フーリエ変換の得意技は「連続的な信号を離散的な周波数成分に分解することで、時間領域の信号から周波数領域に変換」すること、またディジタル信号の周波数特性を解析し、特定の周波数成分のフィルタリングや圧縮などの処理が可能になるとお伝えしました。

今日は離散フーリエ変換の数式と前提知識についてお伝えします。

離散フーリエ変換の数式

離散フーリエ変換の数式はこれです。

第一印象はどうお感じになりましたか?

私が離散フーリエ変換について講義する際に、数式をご覧になった参加者からの反応はこんな感じです。

とっつきにくいと感じられた方が多いようですね。。。でも、このような問いに私はいつも「大丈夫ですよ」とお答えしています。このブログシリーズでも、そのことをお伝えしたいと思います。

離散フーリエ変換(DFT)4つの前提知識

さて、今回は離散フーリエ変換(DFT)を知る上で前提となる、高校で習ったけどおそらく社会人になっても使わないと思っていた数学知識が3つと、有名な公式1つについてお伝えします。昔皆さんが学校で習った(はず)記憶を引っ張り出してみましょう。

①三角関数

1つ目は三角関数です。cosとかsinというやつです。私がこれを高校で習った時には、正直「三角関数なんて何の役にも立たない!」と本気で思っていましたが、ディジタル信号処理では非常によく使います。

その理由は、三角関数のcosやsinの波の形が、ディジタル信号処理で扱う信号=周期的な波の形にとても似ているからです。とても似ているので、三角関数はディジタル信号処理に便利に扱えるわけです。

三角関数のcos(余弦波)とsin(正弦波)の例を示してみました。

図1

次に図2に信号=周期的な波の形を平面図で表現し、信号処理でよく扱う事象を表しました。信号の波の高さを振幅、1秒間に繰り返す波の数のことを周波数f、繰り返す波のどこにいるのか位置情報を位相と呼びます。三角関数と形がとても似ていますね。

図2

形が似ているので、三角関数は信号処理の基本的な構成要素が扱え、信号の振幅、周波数、位相を表すのにとても役立ちます。

余談ですがcosとsinは数学ではそれぞれ余弦波、正弦波と言いますが、ディジタル信号処理の世界ではどちらも正弦波と言います。おそらく位相(周期的に変動する波の位置情報や振動するタイミング)が異なるだけだから、偉い先人がシンプルに同じ言い方にしたのだろうと勝手に思っています。

②内積

2つ目は内積です。これも当時三角関数以上に何に使うのかサッパリ理解できませんでした。

内積は「2つのベクトルAとBがどれだけ似ているか=相関」を求めるものでしたね。ベクトルAとBの内積は、2つのベクトルの大きさとそれらの間の角度θのcosの積として表せます。このような公式です。

平面図で表すとこんな感じです。

図3

次にベクトルAとBを成分表示してみます。xyの2次元でベクトルAの成分は(a1​,a2)、ベクトルBは (b1​,b2)としてグラフで表すと図4のような感じになります。

図4

このときベクトルAとBの内積は各成分の積の総和としても表すことができます。式で書くとこうなります。(次元がn個に増えても考え方は変わりません)

図5は、左図に内積のベクトル成分値(a1,a2),(b1,b2)を、右図で横軸をn、縦軸を各成分の大きさとして、並べ変えてみました。

図5

この時、各成分の積 a1×b1+a2×b2+…an×bnの和が、内積になります。

ベクトルを信号とみなせば、左図は、信号に含まれる成分の大きさで、それを時間nで離散的に示せることわかる思います。また、内積は信号AとBの相関を求めていることと同じになります。

③虚数

高校で習ったけどおそらく社会人になっても使わないと思っていた数学知識の3つ目は虚数です。2乗すると-1になる謎の数字です。これも一生使うことはないと思っていましたが、ディジタル信号処理では虚数をよく使います。

ディジタル信号処理では、高校数学では虚数をiで表しますが、信号処理では、iが電流と間違えやすいためjを使います。

信号処理では、実数だけで信号の計算すると場合分けが発生するため計算がかなり面倒です。虚数が加わることで実数だけの計算よりも手早く信号の特性を分析できます。実際にはこの虚数と実数の両成分を合わせ持つ複素数を使うことで、信号の振幅と位相情報を手間をかけずに算出できるようになります。

④オイラーの公式

最後、4つ目はある有名な公式です。三角関数と指数関数の関係を表す式、オイラーの公式です。

Leonhard Euler 2
オイラー様 (wikipediaより)

信号処理の計算は冒頭の三角関数を用いれば可能ですが、指数関数を使うと計算がより簡単になるので扱い方を覚えておくと便利です。その計算方法も追ってご紹介いたします。

以上、高校では役に立たないと思っていたが、今とても役立っている数学知識を中心にお伝えしました。皆様も思い出してきましたでしょうか。将来息子が高校で習い始めたら「使えるのでしっかり覚えとけ!」と心からアドバイスします笑

次回は周波数成分の求め方をお伝えします。理解が進むように例や図解を用いて解説を進めますね。

bookmark_borderディジタル信号処理~高校数学で理解する離散フーリエ変換② フーリエ変換とは?


フーリエ変換とは?

フーリエ変換は、信号処理や画像処理、音声解析など多岐にわたる分野で使用される数学的手法で、主に連続フーリエ変換と離散フーリエ変換の二種類があります。連続フーリエ変換は、非周期的なアナログ信号を周波数成分に分解するのに用いられ、離散フーリエ変換(DFT)はデジタル信号の周波数解析に適しています。さらに、計算効率を高めた高速フーリエ変換(FFT)も広く利用されており、リアルタイムでの信号処理に不可欠です。

フーリエ変換ができること

何か波形を思い浮かべてみてください。きれいな正弦波でしょうか?それともぐちゃぐちゃの波形でしょうか?実は思い浮かべた波形がどんなに複雑な波形であっても、あらゆる周波数の正弦波を合成すれば作り出すことができます。「フーリエ変換」はどんな複雑な合成波であっても、それがどんな周波数の正弦波で構成されているか明らかにする処理です。

数学世界のミックスジュース解析

これは、目の前にある謎のミックスジュースから、それぞれの果物の割合を正確に特定するようなものです。あたかも人間が「色」や「匂い」や「味」で果物を識別するように、フーリエ変換では波形を分析して、その成分が何なのかを明らかにします。

音楽の波形をフーリエ変換すると、その音楽がどのような音の高さ(周波数)で構成されているかが分かります。あたかもオーケストラの演奏を聴いて、どの楽器がどの音を出しているかを聞き分けるようなものです。

フーリエ変換は何に使われる?

フーリエ変換は、物理学から工学、音響学、画像処理、電波測定機器に至るまで、多岐にわたる分野で応用されています。スペクトラムアナライザ(スペアナ)はその一例で、高周波信号に含まれる周波数成分の分布、すなわちスペクトラム(Spectrum)を表示・解析する測定器です。高周波信号(電波)はパワーメータや周波数カウンタなどでも測定されます。

電子機器の開発で、信号のノイズを取り除くためにフーリエ変換が使われることもあります。例えば私たちの開発製品でも、特定環境の音を取り去ったり、特定周波数の音だけを聞き取りやすくする為に、信号処理を活用した事例があります。事例について詳しくはこちらをご覧ください。

このようにフーリエ変換は、世の中の無数の波形を理解するための強力なツールです。見えない世界の成分を解き明かし、社会の進歩に貢献しています。料理研究家が味で料理の神髄を解き明かすように、フーリエ変換は波形で世の中を解き明かし、それが新発見へとつながっていくのです。

次の記事では、ディジタル信号処理で使われる、離散フーリエ変換についてさらに掘り下げていきます。次回はその前提条件の数学知識についておさらいします。

bookmark_borderディジタル信号処理~高校数学で理解する離散フーリエ変換① アナログ信号とディジタル信号


 今季節は鬱陶しい梅雨の真っただ中。でも雨上がりの晴れた空に美しい虹がかかっているのを見つけたら、ちょっとうれしく感じます。

アナログ信号とは何か

さてここで、虹について簡単なクイズです。

この写真の虹の色は全部で何色ですか、と問われたらどう答えますか? レインボーカラーの7色?

もし私の小6の息子がそう答えたなら、「うん。でも実際には虹の色はきれいに分かれておらず、連続的に変化してるんだよ、アナログ信号みたいにね。」と答えてしまいます(笑)

虹に例えてみましたが、アナログ信号とは、”時間tに対して変化が連続的な”信号”のことで、関数グラフで表すと図1のような波として表せます。

図1

ディジタル信号処理とは?

これと対照的なものにディジタル信号があります。

このディジタル(デジタルとも言いますね)とはなんでしょうか?Wikipedia に詳しい解説がありますが、一言で言うならディジタル信号とは、”情報を段階で区切って数字で値nで離散的に示した信号“のことです。

この離散的というのはどういう状態なのか、図2に示しました。図1の連続的なアナログ信号が、段階的に区切られ、切り離された個々の数値になっています。これは、アナログ信号から一定間隔でサンプルを取り出しているのですが、このプロセスを標本化(サンプリング)と呼び、これら標本化された値の集合がディジタル信号となります。

図2

ディジタル信号処理とは、このようにアナログ信号(連続信号)をコンピュータが扱いやすいディジタル信号(離散信号)に変換して、音・映像・通信情報など様々な情報のより高度かつ効率的な処理をコンピュータで実現することです。

実は連続的なアナログ信号はそのまま今のコンピュータでは扱うことはできません。ディジタル信号=離散した数値にしないと処理ができないのです。コンピュータに支えられている今の社会環境にとって、ディジタル信号処理は目立たないけれども、とても重要なプロセスなんです。

ディジタル信号処理を数学的に示すと

ディジタル信号処理について数学的に示したのが、図3です。

図3

右図の連続=アナログ信号の積分は、時間の関数としての信号の面積を求める操作であり、∫𝑥(𝑡)d𝑡と表されます。これに対して、左図の離散=ディジタル信号では、標本化された値の総和を取ることで、信号の全体的な特性を捉えます。これは∑𝑥(𝑛)という形で表されます。

このとき、ディジタル信号の総和は、アナログ信号の積分に相当すると考えることができます。

ディジタル信号処理を学ぶ意義

ディジタル信号処理は、これまで音声処理、画像処理、通信システムに始まり、私たちが扱う産業機器センサや超音波医療機器など、実に幅広い機器やサービス創出を裏で支えてきました。また私自身、信号処理のプロとして現場で革新的な瞬間を何度も体験しました。その経験から言えるのは「これからエレクトロニクス技術で未来社会を支えていくエンジニアが、信号処理を数学的に理解し適切に扱えるようになれば、技術者として確固たる強みになる」と感じています。

このブログシリーズで、ディジタル信号処理における強力なツールの1つである離散フーリエ変換(DFT)とは何か、高校レベルの数学で理解いただけることを段階を踏んでお伝えしていきます。次回は、フーリエ変換とは何か、そしてその理解の前提条件となる数学知識についてお伝えします。