虚数が回転になる話

j を掛けると90°回る。それだけの話が、なぜ信号処理の全部を説明できるのか。


虚数が苦手だという話をよく聞く。「なんで存在しないはずの数が計算で使えるんだ」という感覚は分かる。私も最初そう思っていた。

でも今は、むしろ虚数の方が「自然」に見える。


j を掛けると何が起きるか

実数の直線上で考えると、-1 を掛けることは「方向を反転する」操作だ。3-1 を掛けると -3。反対側に移動する。

では「半分だけ反転する」操作はあるか?

-1 を掛けて反転するのだから、√(-1) を掛ければ「半分の反転」、つまり90°の回転になる。それが j = √(-1) の本当の意味だ。

平面で考えれば自然に見える。横軸が実部、縦軸が虚部。j を掛けることは、平面上の点を原点中心に90°回転させる操作だ。j をもう一度掛ければ180°回転 → -1 になる。数式と幾何が一致する。


e^(jθ) が円周上を走る理由

オイラーの公式 e^(jθ) = cos(θ) + j·sin(θ) は、「θ ラジアン回転した単位ベクトル」を表している。

θ を時間で変化させると:

e^(jωt) = cos(ωt) + j·sin(ωt)

これは複素平面上で、角速度 ω で円周を回り続ける点だ。実部を取り出すと cos(ωt)、虚部を取り出すと sin(ωt) になる。

だから信号処理では実際の正弦波 cos(ωt) を「複素回転 e^(jωt) の実部」として扱う。計算が代数的に扱いやすくなる。


フーリエ変換が「周波数ごとの回転」を数える

フーリエ変換の定義をそのまま読むと:

F(ω) = ∫ f(t) · e^(-jωt) dt

f(t) で回転するフェーザーをかけて全部足す」という操作だ。

直感的には: もし f(t) の中に周波数 ω の成分があれば、それと回転方向が一致するので積分が大きくなる。なければほぼ打ち消し合ってゼロに近くなる。

これは「周波数ωの回転と、信号の回転のどれくらい合っているか」を測っている。テンプレートマッチングの一種だ。


Fourier スケッチブックで見たもの

昨日作った Fourier スケッチブック で、マウスで形を描くと回転する円の重ね合わせが元の形を復元していく。

あれは正確には DFT(離散フーリエ変換)で、描いたパスの各点を複素数 x + jy として扱い、どの周波数成分がどれくらいあるかを計算している。

大きな円が低周波成分(大まかな形)を担い、小さな円が高周波成分(細かい凹凸)を担う。N を小さくすると形がぼやけるのは、高周波成分を捨てているから。ローパスフィルターをかけた状態と同じだ。


位相が「形」を決める

FFT の出力は複素数 A·e^(jφ) だ。振幅 A は「その周波数の成分がどれだけ強いか」、位相 φ は「その周波数成分が時間軸のどこから始まるか」を表す。

よく「FFT のスペクトル」として見るのは振幅だけだが、位相を変えると波形の見た目が完全に変わる。音は変わらない(耳は位相に鈍感)が、画像は変わる。顔の位相と家の振幅を組み合わせると、家の形をした顔っぽいものが見える、という実験がある。


複素数は「存在しない数」じゃなくて、「2次元の回転を1つの記号で書く方法」だと思うと、急に使いやすくなる。

虚数が不思議に見えるのは、直線上で考えているから。平面に広げれば、ただの回転だ。