雨上がりの午後

Chapter 296 歩みを続けた成果

written by Moonstone

 時は流れて6月に入った。
 就職活動の状況は相変わらずで、俺の研究室では、就職希望者は学部院生問わず全員が1つ以上内定を得ている。俺も先月中旬に無事高須科学から内定を得た。折り返し高須科学からの要望で現時点での成績証明書を送った。自信を持って送れるような成績で良かった。
 高須科学からは併せて、詳細な企業資料が送られてきた。採用となったら配属予定の機器開発2課を含む機器開発部の業務報告集、一般向けの企業案内パンフレット、財務資料と盛り沢山の内容は、和佐田さんが送ってくれたものだ。どれもカラフルで読みやすく、紙の質も良い。
 それらを携えて、先月の下旬に実家に赴いた。俺と両親の就職先に関する話し合いだから、晶子は連れていくつもりはなかったが、「ご一緒したい」という強い要求を断り切れず、蚊帳の外に置かれて退屈になるかもしれないと前置きして連れて行った。
 正式に内定を出たことを伝えてからの、資料を広げての説明は骨が折れた。「誰でも知っている」という観点からすると知名度は低いが知られざる優良企業という認識には引き上げたが、このまま就職先とするのは難色を示すのは変わらなかった。その理由は単純明快。「新京大学ならもっと良いところに就職出来る筈」というもの。その「良いところ」とはそれこそ「誰でも知っている」レベルの有名企業であり、公務員だ。そういうところに就職しなければ納得したくないという意図が見えてげんなりした。
 有名企業が必ずしも働くことに適している、すなわち給料や知名度だけじゃなく、社員が健康的に働けるか、きちんと休日があって有給が取れるか、無茶な転勤がないかといった観点からは必ずしも優良とは限らないこと、その証拠にその手の企業からは過労死だのメンタルヘルスの問題だのが続出しているといったことを挙げ、親の見栄を満たすためにそういう企業に俺を意図どおり就職させて満足か、と思わず語気を荒げて迫った。
 親の見栄と図星を突かれたことで両親は黙り込んだが、納得はしたくない様子はありありだった。いい加減うんざりしてきた俺は話し合いを打ち切って帰ろうと思ったが、それまで黙って同席していた晶子がこんな助け船を出した。

私は、祐司さんの見る目に間違いはないと思っています。

 晶子は事前に今日俺が持参した資料に全て目を通したことを話し、誰でも知っているような有名企業では、白物家電や携帯電話、ゲーム機など流行り廃りが激しい商品を扱うことが多いこと、その中で専門分野に携わることは心身を壊すリスクを伴う場合も多いこと、その一部が過労死やメンタルヘルスの問題、果ては単身赴任による家族の断絶といったことを引き起こしている、と淡々と話した。
 その上で、俺が企業の知名度やそこに勤務することのステータスや給料といったある種分かりやすい面だけではなく、休暇の取りやすさをはじめとする働きやすさ、無理な転勤や転勤の連続がないといった社員の家族の生活も考慮していることも考えて判断したことを話し、その判断に間違いはないと思うと話した。
 更には、高須科学への採用の話は俺の学年の就職担当の教授から研究室の教授を介して持ち込まれたこと、両親も知っているように−4年進級時の成績は送付済みと知っている−成績が非常に優秀だから、研究室の教授と就職担当の教授が連名で強く推薦する後押しがあったこと、そうした後押しや大学と企業の関係の下で内定まで進んだことは、俺のこれまでの頑張りがあってのことだとも話した。
 単に俺について来たと思っていたらしい晶子が次々と合理的な話を言ったことで、両親は口を出しあぐんだ。それでもやっぱり納得はしたくない様子は分かった両親に、両親が納得するしないに関わらず就職先は俺自身が総合判断して決めること、親の見栄のために就職するわけじゃない、と言って帰ることにした。
 帰り道、どこまでも見栄を優先させて俺が言い分を聞き入れなかったことで見送りもなかったことに心底呆れて腹立たしかった。この分だと結婚では大揉めになるかもしれない、と思わずこぼすと、親や親戚に構わなければ問題は起こりませんよ、と晶子は応えた。
 俺自身晶子との結婚で親の援助を受けるつもりはないし、無駄金がかかるだけの旧来型の披露宴は特にするつもりはない。父方の従兄の披露宴に出席しただけで懲りたくらいだ。だが、金は出さなくても口は出すのが親族というもの。両親でもそれは十分ありうる。結婚式の前に親族や両親が揉めて、肝心の新郎新婦の仲に悪影響を与えるなんて話は珍しくもない。
 晶子は、自分も過去のことで−敢えて言わなかったが兄さんと引き裂かれたことだということくらい分かる−両親と実質断交状態だし、自分が申し出た結婚の報告も単なる報告で済ませて両親の意志は無視すると静かに、しかし強く言い切った。それくらいの覚悟が出来ていないのに結婚生活が出来るとは思えないとも。
 本格的に両親と絶縁する気構えの晶子に改めて芯の強さを見た俺は、つまらない言い争いに長々と付き合わせたことを率直に詫びた。晶子はついて行くと言い出して押し切ったのは自分だし、両親の言いなりになって内定を辞退すると言わなかったから十分安心出来たこと、俺の判断に間違いはないと思っているし、余程出鱈目なものでない限り夫である俺の判断を支持してフォローするのは妻である自分の役目、とも言った。
 他の女性が絡むと脆い面はあるが、晶子の芯の強さや結婚生活に向けた気構えや覚悟は強いことは改めて分かった。それだけの決意が出来ている晶子がkの就職活動で最悪の結果になってもしっかりしたセーフティネットとして機能するのが、これからの俺の役目だ。それを再認識出来たことだけは、あの無駄な話し合いは良い機会だったと思う。

 内定が出たことで、話をくれた増井先生と協力して後押ししてくれた久野尾先生に礼を言いに行った。どちらも高須科学から連絡を受けて俺に内定が出たことを知っていて、喜ぶと共にあの流れで内定が出ないことは俺が犯罪でもしない限りあり得ないし、もし万が一出なかったら他の良い話を回すだけだったと話した。
 若干気になっていた俺の左手薬指が示すことについて尋ねたところ、先んじてそういう相手が居るということは伝えておいたがプライバシーの範疇だと伝えておいたし、高須科学の側も先の企業訪問で非常に優秀な学生だと分かったから−プレゼンが非常に良かったと絶賛していたそうだ−、それを理由に内定を出さないことは万に一つもあり得ないから心配は無用、と言って来たそうだ。この辺も晶子の状況と正反対だ。晶子は指輪が全否定と詰られることへと直結していた。俺の場合は教授2名の後押しや水面下の圧力もあって、単独での企業訪問に続いてあまりにもあっさり内定が出た。指輪のことも雑談と位置づけられた面接の最後に出ただけで、ゴールイン出来るようにと言われたくらいなのに…。
 俺は他にも考えている企業があったが、内定を幾つも取って勲章にするつもりはないから企業を対象とした就職活動を打ち切り、近付いている公務員試験に集中している。国家T種とU種、そして新京市がある県の県庁上級。これで十分だろう。
 晶子は企業への就職を完全に諦めて、公務員試験の準備に専念している。受験するのは国家U種と新京市を含む県庁の上級と市役所の事務職。企業の説明会に行っても全否定されて交通費を消耗するだけだし、何より俺と離れてでも財政基盤を構築することが本意ではないのなら無理をする必要はない、と俺が言ったことで踏ん切りがついたそうだ。国家T種を受験しないのは、転勤の可能性を減らすため。国家T種はキャリア官僚となって全国的な転勤を繰り返すことがキャリアの蓄積の一環でもある。国家U種は基本的に採用された地域以外の転勤はない。その分出世の幅は狭くなるが、事務次官が目標でない以上勤務地域を絞りやすい国家U種の方が晶子にとっては都合が良い。地方公務員なら更に勤務地を絞りやすい。

「これで良いかな。」

 俺はプレゼンソフトで作っていたスライドを保存して一息吐く。作っていたのは中間発表で使うスライド。4月に研究室に本配属になった時点ではまだまだ先だと思っていた中間発表は、ついに今月の予定になった。しかもあと1週間だ。とは言え、俺はさほど切羽詰まっていない。高須科学の非公式訪問や採用試験で作ったものを手直ししたり、その間やそれ以降の進捗を追加すれば良い。むしろ時間内に収めるよう端折った部分も多い。
 どうもそういった事情は俺と大川さんのペアくらいのものらしい。指導する院生は2年だと内定を得ているし、1年だと卒業や修了とはひとまず無縁で余裕があるから、連休明けから研究テーマを進めるべく乗り出してくる。だが、必須を含めて結構単位を落としている学部の面々はそうもいかない。院生との間でどうしても進捗に関して思惑のずれが生じて来る。研究テーマは学部全員がそれぞれ異なるものを担当しているから、どう足掻いても「写させて」が通用しない。「写させて」を防ぐために研究テーマを分散させているのもあるかもしれないが、手持ちを纏めるしかない。更に、スライドを作って質疑応答も自分でしないといけない。院生のフォローはあるだろうが、そればかりだと「何をしていたのか」ということになりかねない。

「祐司ー。」
「安藤くーん。」

 茶を淹れに行こうとしたところで、複数の声がかかる。1人はパーティションの向こうから顔を出し、もう1人、否、2人は後ろから迫ってくる。

「電子回路論Uの差動増幅回路(註:2つの入力の差分を増幅する回路。ノイズに強いためCRTの信号出力など長い配線や高速信号の伝送に使われる)が分からなくてさぁ。」
「FFT(註:Fast Fourie Transfer:高速フーリエ変換の略。信号を周波数の分布に変換する数学理論の1つで信号処理では必須とも言える理論)の公式について聞きたいんだけど。」
「JTAG(註:マイコンやCPLDなどのプログラム転送やデバッグに使われるシリアル(データ用信号線が1本。複数だと「パラレル」と称する)通信規格)の使い方がよく分からなくて。」
「頼むから一斉に言わないでくれ。」

 俺が溜息を吐いて待つ間に、智一を含む3人が順番について話し合いを始める。…どうやら話し合いでは決着がつかず、じゃんけんで決めることになったようだ。ファイルは保存したし、念のためPCをロックしておくか。どのみち暫く時間がかかりそうだし。

「…順番は決まったか?」
「まず俺から!」
「こういう時に似合わない元気の良さだな…。」

 運が良いのか悪いのか分からないが、智一から対応する。
 電子回路論UはOPアンプの回路が中心だが、入出力の電流を算出の基準にするところや−他は電圧を算出対象や基準にすることが多い−2入力の電位を等しいと見ることが分かり辛い。結局演習問題を解いて納得するしかないんだが、それを怠ると簡単に単位を落とす嫌らしい講義の1つだ。しかも必須。だが、その分かり辛さの特徴を逆手にとれば簡単に理解出来る。
 OPアンプ回路で最も重要なファクターであり、頻繁に算出の題材にされる増幅度(註:入出力電圧÷入力電圧で定義される値。10を底とする対数(常用対数)を取って20倍すると音量などで見かける値「dB(デシベル)」になる)は電圧を使うからと言って、電圧を中心に考えると失敗すること、入力端子の電位は等しく、接地されていると仮定−所謂「仮想接地」−することで、OPアンプは計算式に直接関与しないことを理解すれば、大抵の問題は解けるようになる。

「−こうすれば良いわけだ。」
「おーっ、なるほどね!」
「反転回路、非反転回路、それと差動増幅回路を押さえておけば、大抵の問題には対応出来る筈。じゃ次。」

 次はJTAGの使い方。正直教えるようなもんじゃない。JTAGは開発環境を使っていれば、いざFPGAへの書き込みというところで嫌でも使うものだ。それが分からないってことは、開発環境が使えていないんだろう。その辺を聞いてみると、やっぱり正解。今月の中間発表で何かしら進捗を出したい。せめて開発環境−その人もFPGAによる信号処理回路の構築がテーマの中枢にある−だけでもひととおり使えたとしておきたい。だが、JTAGの使い方が分からなくて立ち往生している。要約するとこんなところだ。
 言うより実例を見せた方が早い。俺はPCのロックを解除して、試作用のCPLDキットと問題のJTAGケーブルを引き出しから取り出して、開発環境を立ち上げる。ソースの入力は別として−入力も出来ないようならこの学科を卒業するのは諦めた方が良い−コンパイルから順を追って説明する。開発環境までならシミュレーションで目的の波形が出ればOKだが、実際にFPGAやCPLDに書き込むとなるとピン配置が不可欠だ。驚いたような顔をする。どうやらピン配置を決定していなくて書き込みが出来なかったらしい。コンパイルやシミュレーションはピン配置が決まってなくても出来るからな。
 ピン配置定義用アプリケーション−開発環境からメニューで選択する−の起動とピン配置の定義の仕方を教える。定義の方法と言っても何のことはない。マウスで入出力の名前を任意のピンにドラッグ&ドロップすれば良い。マウス操作が出来れば十分出来る。それでコンパイルしてエラーがないことを確認して、基板とJTAGケーブルを接続する。キットだとコスト削減のためにJTAGコネクタが簡略化されているものがある。電源とGNDを伴うから挿し方を間違えると最悪ICやJTAGケーブルが壊れる。大抵基板のシルク(註:部品の番号や向きを記したもの。基板に白色で印刷されるのが通例)に1番ピンの位置が書いてあるから、それとJTAGケーブルの1番ピンを合わせれば良い。
 その上で書き込み用アプリケーション−これも開発環境からメニューで選ぶ−を起動する。きちんと接続されていて電源も供給されていれば−キットや評価基板によっては別に電源を用意する必要がある−、この時点でウィンドウにターゲットのICがご丁寧に型番まで表示される。実際それらが表示されているのを見せる。
 ここまでくればあとは簡単。書き込みたいファイルを選んで「START」ボタンをクリックするだけだ。少しして「SUCEEDED」とダイアログ表示される。これで書き込みは完了だ。きちんと動作するかどうかは別だが、書き込むまでの設定は簡単だ。

「−これで終わり。」
「ピン配置を定義してなかったのが駄目だったのかぁ…。」
「実際に動かすんだから、ピン配置が決まってないと回路を動かしようがない。開発環境から実際のICに移る段階では、ピン配置をした状態でコンパイル出来ることが絶対条件ってわけ。」
「JTAGはピンを合わせて差し込めば、特に意識する必要はないってこと?」
「そう。基板を作る場合はコネクタやケーブルの配線をきちんと決めないと使えなくなる場合があるけど、キットや評価基板だったら、普通所定の位置に差し込めば使える。少なくとも電源とGNDさえ間違わなければ壊れることはないから、エラーメッセージが出ても慌てないこと。じゃ次。」

 次はFFT。公式について聞きたいと言うからどのあたりか詳しく聞いてみると、これが随分漠然としている。どうもFFT自体が分かっていないようだ。はてさて、こういう場合どうすべきか…。仕方ない。概念をかいつまんで説明するか。
 まず、通常の−というと語弊があるが−フーリエ変換とFFTの大本であるDFT(Discrete Fourie Transfer:離散フーリエ変換の略。詳細は本文参照)の違いを説明する。大きな違いはフーリエ変換では連続値、つまりはアナログ値、DFTは離散値、つまりはディジタル値を扱うことだ。何故フーリエ変換じゃなくてDFTを使うか。計算をさせるPCでは離散値を使わざるを得ないからだ。アナログ値を使えればそれに越したことはない。ディジタル化≒離散化(註:離散化は連続値をある間隔で抽出すること(サンプリング)でディジタル化は決まった間隔の数値(時計ならアナログの針がディジタルの60進数値になること)にすることなので完全に等価ではないが、特にPCでは離散化とディジタル化は等価と見て良い)しないとPCではデータを扱いきれない。アナログ値はデータが連続しているからデータが膨大になって、計算や処理が追いつかない。
 可能な範囲でサンプリングして離散化したは良いが、フーリエ変換はアナログ値を対象にしたものだから適用できない。そこでDFTの出番となる。確認を取ると、此処までの説明は理解出来たようだ。
 FFTはDFTの高速版だ。DFTはそのままだと、離散個数をNとすると複素数の乗算をN^2回する必要がある。それがFFTだとN×log2(N/2)回で済む。logがあるからNが大きいほど、つまり離散個数が多いほどその効果が大きくなる。計算回数で見ると、logの底が2だから、N/2が2のべき乗になるように選定すると整数になってより分かりやすくなる。

「此処までで、通常のフーリエ変換とDFTの違い、それとFFTの効能は分かった?」
「分かった分かった。安藤君の説明は分かりやすいね。」

 こういう場面で褒められても何ら嬉しくないんだが…。溜息を吐いて再開する。だが、此処からは口では説明し辛いな…。元々定義や公式ってのは憶えるだけなら記憶力があれば何とかなるが、理解は難しい。この調子だと口とメモ代わりの筆記説明だけでは足りないだろう。となると…。

「場所を会議室に替える。」

 会議室は週1回のゼミでも使う。そこにはホワイトボードがある。そこで大きく図を描きながら説明した方がやりやすい。場所に関しては此処に限定する必要はない。俺の言うことが聞けなきゃ説明しないだけだ。…何処かの犯人みたいだな。
 念のためPCをロックしてから会議室に移動。会議室は空いてるから、適当なところに座ってもらって改めて説明を再開する。ホワイトボード全面を使うつもりで2次元の座標軸を描いて、そこに適当な線を描く。説明は此処からだ。その線を時間tの関数f(t)とする。f(t)を離散化する周期をΔtとすると、周期T0までにN回離散化されるから、離散化される関数f(t)の位置はΔt、2Δt、3Δt、…、(N-2)Δt、(N-1)Δt、NΔt=T0となる。
 ここでフーリエ変換をリーマン和で近似する(註:詳細を書くと出鱈目に長くなる上にテキスト形式では積分の式を表現出来ないので省略するが、「離散化の周期Δtを際限なく細かくしていくと、Δtにおけるf(t)の値f(Δt)とΔtの積をΔt回だけ加算することで近似出来る」こととフーリエ変換の公式を組み合わせると思えば良い)。すると級数(註:ある規則性を持つ無限の加算。Σで表記することが多い)が得られる。で、ΔtがT0をN回均等分したものだから、Δt=T0/Nをさっき得られた級数の式に代入すると、近似された離散フーリエ変換の公式が得られる。ここまで理解出来ていないと次の話は到底理解できない。どうだろう?

「此処までは分かった?」
「うーん…。積分が級数に変化するのがいまいち…。」
「リーマン和を使った積分の近似の詳しいことは、工業数学あたりのテキストを読み返した方が早い。必要なことは、フーリエ変換の公式…、これをΔtごとに細かく切って…、例えばこんな感じ。」

 言葉での説明には限界がある。俺はホワイトボードに描いたf(t)に見える範囲で出来るだけ細かく縦線を入れる。更に、f(t)の一部を別枠に拡大表記する。こうすると、Δtを際限なく細かくしていく−数学的には「Δt→0」と表記出来ること−と、横Δt、縦f(Δt)の長方形に近似出来ること、その長方形をN回足し合わせればf(t)に際限なく近付けるものだと視覚的に分かるだろう。

「この理屈とフーリエ変換の公式を組み合わせれば、近似した級数の各項はf(Δt)と、Δtと、指数関数φ(Δt)を掛け算したものになる、ってことを理解すれば良い。」
「あ、なるほど。積分の基礎に帰るってことか。」
「それで良い…っ!」

 ふと正面を見ると、何時の間にやら研究室の面々が俺の方を向いて座っている。智一を含む学部4年どころか、大川さんを含む院生、果ては野志先生に久野尾先生も居る?!い、何時の間に…。

「凄っげえ分かりやすい。」
「ネット見るよりこっちの方がリアルタイムだし分かりやすいな。」
「説明も上手いね。」
「折角ですから、私達も復習したいのでこのまま続けてください。」

 てっきりマンツーマンだと思ってたのに…。今更引っ込みがつかないから腹を括って続ける。駄目だったら院生や先生が訂正するだろう。その辺は他力本願しても罰は当たるまい。

「…確認したいんだが、FFTの公式で分からないのは、公式そのものって見て良いか?」
「そう。波形に虚数(註:2乗すると-1になると定義されるi(電気関係では電流iとの混同を避けるためjと表記することが多い)のこと)が出るってのが分からない。それって存在しない波形なんじゃないのか、って。」
「そこから分からないとすると…、このままDFTの公式に進むのは止めた方が良いな。」

 此処までの段階で虚数は出ることには出ているが、フーリエ変換の公式で出ただけだし、それはφ(t)に直ぐ置き換えられたから、知らなくても影響はない。だが、波形を虚数表記することが理解出来てないと、最後の公式を出して終わりとするのと大して変りない。
 俺はホワイトボードを裏返して−可動式の黒板と同じで表裏が使えるタイプ−波形の虚数表記の説明に取りかかる。此処は俺自身1年2年の専門科目で手こずった記憶がある。これを理解出来たことで他の講義の理解が出来たり深まったりしたことは多い。

「確かに波形が虚数で表記されることには違和感があると思う。実際、音として聞いたり出来る波形は、実際に存在する、つまり実数。虚数の波形なんてあったとしても人間には知覚出来ないと思う。虚数の波形ってのは位相差を含めて波形を表すための道具と思うと分かりやすい。」

 俺は前置きしてから左側に円、右側に2次元座標軸を描く。電気回路論Tあたりで何度も見たであろう、位相を論じる際の前準備だ。

「分かりやすい例としてサイン波sin tで説明する。時間tが0の時、振幅が0だから、ここから始まる。」

 俺は円の上に点を描き、そこから右方向に線を引っ張って、対応する時間のところで止めることを繰り返す。座標軸で円に点を描いた場所の時間と、縁から伸びて来た線の交点に点を描き、それをサイン波らしく結ぶ。

「−こんな感じで時間tの関数sin tと、円の表記の対応が取れるってのは分かる?」
「それは分かる。」
「それだと…、位相が違うサイン波をまず描く必要があるかな。初期位相−最初のスタート地点がπ/4(註:角度をラジアン(π=180度とする表記法。理学工学では通常こちらを用いる)進んだものにするか。」
「その、位相が進むとか遅れるって基準がいまいち分からないんだ。」

 そう来たか…。思わず絶句してしまったが、この説明を避けては通れないか。

「位相の進みや遅れってのは、絶対的なもんじゃない。サイン波やコサイン波といった分かり切ってるものだと、例えばサイン波なら時間の経過と共に振幅が0からπ/2まで1まで増えて、π/2からπまでは0まで減ってといった経緯から見て、進んでるか遅れてるかを言ってるんだ。」

 俺はサイン波のπ/4位相が進んだ波形を、さっきと同様の手法で描いていく。振幅が0からじゃなく、sinπ/4(註:角度で表記するとsin(45度)=1/√2)から始まる。スタート地点が違うだけで波形の形や周期が変わるわけじゃないことを強調する。波形の色もsin tが黒でsin(t+π/4)を赤にして、位相、すなわち波形の描く位置がずれただけであることを分かりやすくする。

「これを見ると、π/4だけ位相が進んだサイン波ってのは、開始地点が黒で描いたsin tの波形のt=π/4の地点から描いたものだって分かると思う。言い換えれば、位相の進みは開始地点の先取りってこと。遅れはその逆。それだけのこと。」
「なるほどね…。」
「話を元に戻すと、実はこのsin(t+π/4)の波形を描いた過程で、波形の虚数表示の準備は出来てる。この円…。この円の横軸を実数、縦軸を虚数としたものが波形の虚数表記、所謂極座標ってものになる。」

 若干唐突かもしれないが、事実だから仕方ない。説明を続ける。サイン波を描くために使った円の横軸を実数Re、縦軸を虚数Imとすると、サイン波の波の位置は横軸Reの値xと縦軸Imの値yと円周の交点になることは、図示すると一目瞭然。ReとImが作る角度をθとすると、円弧の半径rはr^2=x^2+y^2。これは言うまでもなくピタゴラスの定理だ。
 ここで、三角関数を使って円周状のある点の位置を表現すると、x=rcosθ、y=rsinθ(註:三角関数の詳細は専門書などを参照されたい)と出来る。ReとImで表現したのは角度、すなわち位相を含めて現在のサイン波の振幅を表すために導入したものだと、ある意味割切る必要があることを強調しておく。

「虚数が出て来るのは位相を含めて表現するための道具に過ぎないってこと?」
「そう。波形−ここではサイン波だが、それを描くために使った円周の位置を、横軸が実数Re、縦軸が虚数Imとする二次元座標で表現するためで、虚数の数学的な意味は無視して良い。」

 説明を再開。r^2=x^2+y^2だから、円周状の座標をzとすると、r=|z|(註:| |は絶対値)=√(x^2+y^2)と出来る。縦軸が虚数なのを踏まえるとz=x+jy(註:ここでのjは虚数のiと同じ。前述のとおり電気関係では電流iとの混同を避けるためjを用いる)と出来る。これは複素平面の定義から来るものだから、証明とかはあえてしない。すると、x=rcosθ、y=rsinθだから、z=x+jy=(rcosθ)+j(rsinθ)=r(cosθ+jsinθ)と出来る。円周の半径、すなわちzの絶対値とx,yが作る角すなわち位相θを用いて表現し直しただけだ。
 ここで、テーラー展開(註:詳細は専門書などを参照されたい。ある関数f(x)を無限級数とf(x)のn次微分を用いて近似する方法)を用いて展開する。e^x(註:eはネピアの数で2.718…。lim(1+1/n)^nでn→∞とした時に定義される定数)=1+x+1/(2!)*x+1/(3!)*x^2+…(註:a!は1*2*3*…*aと同じ。確率でよく用いられる)、sin x=x-1/(3!)*x^3+1/(5!)*x^5-1/(7!)*x^7…、cos x=1-1/(2!)*x^2+1/(4!)*x^4-1/(6!)*x^6…と出来る。
 e^xのテーラー展開で両辺のxをjxに置き換えて変形すると、e^(jx)=cos x+jsin xと出来る。これが有名なオイラーの公式で、これがあるからこそ波形の極座標表示がe^(jx)を使えて、フーリエ変換やDFTの理論式が出来る。で、さっき円周状のある点zをz=x+jy=r(cosθ+jsinθ)としたから、オイラーの公式でxをθに置換すればz=r*e^(jθ)。よく見る公式がそろそろ見えて来た。
 更に、zの共役複素数(註:複素平面上の点x+iyに対してx-iyの点を言う。x+iyと横軸(実数軸)で線対称に位置する点)z-=x-jyで、cos(-θ)=-cosθ、sin(-θ)=-sinθだから(註:それぞれのグラフを見れば一目瞭然)、z-=re^(-jθ)と出来る。

「こんなふうに、サイン波を描くために使った円を実数と虚数と位相で表現することから、eを使った表現で置き換えられることが導かれることになるってわけ。つまり、位相を含めたサイン波がeを使った表現で書き換えられるってことでもある。位相θが0ならcosθは1だし、sinθは0.すなわちz=r*e(jθ)=r(cosθ+jsinθ)=r。これは円周をそのまま時間tの座標軸に投影していく、黒で描いたサイン波そのものと同じ。振幅のピークは1だから、r=1とすればバッチリだ。」
「!だから、赤で描かれた位相がπ/4進んだサイン波はt=0の時にr(1/√2+j(1/√2)の位置から始まるから、横軸の値が1/√2、縦軸の値も1/√2nと円周の交点から始まるってことか!」
「そういうこと。サイン波が描き難いと思ったらπ/2にするのも良い。eを使ったり虚数を使ったりするのは、あくまで数学で導かれたり証明出来たりする公式を便利に使うための道具であって、数学的な意味まで考えなくて良いってことは、そういうこと。」

 「観客」から感嘆の声が上がる。「分かりやすい」「講義もこんな具合にしてくれれば」といった声も聞こえる。このあたりは兎に角理解しづらくて、ひたすら参考書や専門書を渡り歩いてようやく理解出来た。この表現形式が理解出来てないと暗記に頼るしかないし、理解どころの話じゃない。
 サイン波で例示したが、サイン波が虚数を用いた表現に置き換えられること、サイン波の位相をπ/2進めたものと同じコサイン波も同様であり、フーリエ級数でも示されるように、全ての関数はサイン波とコサイン波の集合体として近似出来るから、極座標表示z=r*e^(jθ)は全ての関数を考えるにあたって有用だと総括してから、DFTの説明に戻る。ホワイトボードを再びひっくり返す。

「フーリエ変換の本質は、時間tの関数で表される波形を周波数の分布に置き換えること、つまり周期と振幅が違うサイン波とコサイン波がそれぞれどれだけ含まれるかに置き換えることにある。スペクトラム・アナライザはまさにこれをしてるわけだけど、このことはDFTでも変わらない。違うのはDFTでは離散的になることだ。」

 説明に入る前に、確認してからホワイトボードを消して、極座標表示の説明前に導出した、近似したDFTの公式F(f)≒(T0/N)*Σ{x(nΔt)φ(nΔt)}(n:0〜N-1)を左隅に改めて書いて四角で囲っておく。この公式から最終の公式に繋がるから、この公式は前段階として残しておく必要がある。
 改めて説明を再開。前置きしたように、全ての関数は周期と振幅が違うサイン波とコサイン波の集合体で表せるから、それぞれ周期の長いものから順に6個ずつ描く。周期が短いものほど振幅が小さくなることも分かるようにしておく。併せて上からk=0,1,2…と番号を書いておく。この波形をそのまま扱えば、通常のフーリエ変換。今回はDFTだから離散化の例として離散する個数Nが4だとしてみる。要はホワイトボードに描いた6個×2のサイン波とコサイン波を周期Tまでに4分割するだけだ。分割の始点をt=0とすれば、t=T0までに4分割することと同じだ。それぞれの波形に離散化した地点である4つの点を打つ。
 ここで、離散化した点を赤線で結ぶと、各々の本来の波形である黒の線より周期が長い波形が見えて来る。そして、その波形は上から4番目の波形が上から2番目の波形と振幅が違うだけで同じもので、以降3つ単位で上から3つの波形と振幅が違うだけの同一の周期の波形だと分かる。これがDFTのミソだ。
 通常のフーリエ変換だと無限級数として扱う必要があるが、DFTならその中のごく限られた波形だけ扱えば良いということは、PCとかで演算させる際にごく一部のサイン波とコサイン波の集合体に変換すれば良いということだ。PCのメモリは無限にあるわけじゃないから、離散化することで有限のメモリでフーリエ変換を扱うことが出来ることが必要。DFTはその需要を満たすわけだ。

「これを基にすると、Nが4だと一番周期が短い波形は上から3番目、すなわちk=2まで調べれば良いことが分かる。一番上は周期が0、つまり一定の値だからサイン波とコサイン波の集合体と見る際には無視する。すると、NがNだと一番周期が短い波形はN/2ってことが分かると思う。」
「Nが4の時に2だから、N/2でN=4だから4/2=2ってことだよね?」
「そう。Nが4以外の時の状態は自分で描いてみれば分かる。で、赤で描いた波形をよく見ると、周期T0をNで分割したΔtの2回分、2Δtで1周期になってることが分かる。」

 このことから、元の波形元の波形を分解したときに含まれる波形の最大周波数をfmaxとすると、fmax=1/(2Δt)と書ける。更に離散化した波形の基準となるk=1の波形の周波数をΔfとすると、Δf=1/T0と出来る。これらから、fmax=1/(2Δt)=(1/2)*(N/T0)=(N/2)*Δfと変形できる。そして、図からはk=1の波形に対して周期が半分、すなわち周波数が2倍の波形までしか集合体の波形には含まれないことも分かる。

「この式のΔfが周波数分解能、fmaxの2倍がサンプリング周波数。よくサンプリングでは源波形の周波数の2倍以上にしても無意味、って言われるのは此処から来てる。」
「なるほどー。」

 CDのサンプリング周波数が44.1kHzとなっているなど、源波形の2倍の周波数でサンプリングすることの意味は、こうした数学的理由に基づいている。それをきちんと理論だてて証明しようとするとそれなりに骨が折れるし、最低限微分積分や三角関数といった高等数学が分かってないと説明しようがない。
 左隅に四角で囲っておいた近似DFTの公式F(f)≒(T0/N)*Σ{x(nΔt)φ(nΔt)}(n:0〜N-1)に再び焦点を当てる。フーリエ変換のもう1つの特徴は、ある波形のある時間幅の範囲をフーリエ変換すると、その波形の周波数成分、周期と振幅が異なるサイン波とコサイン波に分解出来ることだ。時間tを無限大まで分析しなくても良いってことは大きな特徴だ。
 更に、fmax=1/(2Δt)=(1/2)*(N/T0)=(N/2)*Δfから、源波形を分析するには周波数が0,±Δf,±2Δf,±3Δf,…,±(N/2)Δfについて調べれば良いことも分かる。これらのことから、0,±Δf,±2Δf,±3Δf,…,±(N/2)Δf=kΔf(k=0,±1,±2,±3,…,±N/2)の近似DFTの公式は、F(kΔf)≒(T0/N)*Σ{x(nΔt)φ(nΔt)}(n:0〜N-1)=(T0/N)*Σ{x(nΔt)e^(-i2π{(kΔf)*(nΔt)})}と変形できる。ここでΔf=1/T0からΔf*Δt=1/Nと出来るから、F(kΔf)≒(T0/N)*Σ{x(nΔt)e^(-i*(2πnk)/N)}と出来る。
 ここでオイラーの公式と組み合わせてe^(-i*2π/N)=cos(2π/N)-j*sin(2π/N)=Wnとする。この手の置き換えは数学ではよくある。そのままだと長くなったり見づらくなったりするところを、簡潔に表すためだ。Wnについて見ると、これは極座標表示そのもの。説明の時と異なるのは、虚数部が負になっていることだ。公式の丸暗記だと迷うかもしれないが、横軸を実数、縦軸を虚数とする二次元座標に立ち戻って考えてみれば、最初の説明の時は実数軸から反時計回りに一周するのに対して、今度は実数軸から時計回りに一周することが分かる筈だ。
 そして、横軸縦軸それぞれの位置(値)を決める2π/NでNが連続ではなくて離散だから、円周状の動きも離散的になる。N=8とすると円周は8等分されて、Wnはその等分した位置を指し示すことが分かる。図示すれば駄目押し同然だ。更に、円周状の動きを逆回転させると、実数軸で線対称の動きをすることも分かる。当然ながら逆回転させた時の位置は通常のWnの位置と同じで、単に辿る順が逆になるだけだ。
 このことから、負の周波数−実感が湧かないが極座標表示とさっきのWnの説明からも逆回転に相当すると分かる−の-k'Δf(k'=1,2,3,…,N/2)のDFTの公式は、F(k'Δf)≒(T0/N)*Σ{x(nΔt)e^(-i*(2πnk')/N)}から(T0/N)*Σ{x(nΔt)e^(-i*(2πn(N-k'))/N)}=F((N-k')Δf)と変形できる(註:途中の変形過程は省略)。
 此処でさっきのWnの説明を振りかえると、逆回転時、すなわち負の周波数の極座標表示は正の周波数のそれと実数軸で線対称になる。このことから、X(-1Δf)=X((N-1)Δf),X(-2Δf)=X((N-2)Δf),X(-3Δf)=X((N-3)Δf),…と正の近似DFTの公式に置き換えられて、最終的にX(-(N/2)Δf)=X((N/2)Δf)まで置き換えられる。結局、負の周波数も正の周波数だけ考えれば良いということだ。
 よって、DFTの公式は最終的にF(kΔf)≒(T0/N)*Σ{x(nΔt)e^(-i*(2πnk)/N)}でWn=e^(-i*2π/N)=cos(2π/N)-j*sin(2π/N)を用いると、F(kΔf)≒(T0/N)*Σ{x(nΔt)Wn^(nk)} (k:0,1,2,…N-1)と出来る。これでも良いんだが、更に簡潔にするためにFk=F(kΔf)、xn=x(nΔf)とすれば、DFTの公式はFk=(T0/N)*Σ{xn*Wn^(nk)} (k:0,1,2,…N-1)という、テキストでも見られる公式が登場する。

「−というわけ。虚数表示に惑わされずに、あくまで位相を含めた道具を使うっていう工学分野での極座標表示の基礎に立ちかえることが肝だな。FFTはこれを効率良くPCとかで計算させるためのアルゴリズムだから、その例は専門書を見た方が良い。」
「なるほどー。よく分かった。凄く分かりやすかった。」
「凄ぇ…。講義より絶対分かりやすい…。」
「理解度が半端じゃないなぁ…。特に極座標との絡みが整然としてた。」
「うん。最初から最後まで筋道立てて説明出来てた。理解度の深さが如実に出たね。」
「大したものですね。復習のみならずフーリエ変換の講習にはもってこいの出来栄えでした。」

 「観客」からは一様に称賛や感嘆の声が上がる。本来1人に説明する筈が仰々しいものになったが、「それは違う」「説明が分からない」と言われるよりはずっとましだ。
 それにしても、確かDFTの話はゼミで使っているテキストでも出て来る筈。説明するには理解が足りないと自覚したから、俺に説明させようとしたんだろうか?…まあ良い。DFTが分かったとしても、それ以外の分野が分かるかどうかはまた別の話だし。
Chapter295へ戻る
-Return Chapter295-
Chapter297へ進む
-Go to Chapter297-
第3創作グループへ戻る
-Return Novels Group 3-
PAC Entrance Hallへ戻る
-Return PAC Entrance Hall-