panda大学習帳panda大学習帳ハヤシライスのハヤシじゃない方。目次はじめに最初の質問に対する回答ちょっと気になったので、計算してみる。余弦関数のDFTを計算します。正弦関数のDFT等を計算します。実験で取得したデータをFFTで変換し、その結果得られた周波数領域のデータの各点の「周波数軸」方向の間隔って、どう計算すればよいかわかりますか?という趣旨の質問を受けたのですが、即答することができず、次の日に回答するようなこととなってしまいました。お恥ずかしい限りです。「少し勉強(おさらい)しておけば、何かしらの役には立つんじゃね?」と思ったので、ちょっと勉強してみることにしました。いうことなので、間違いとかそこそこあるかもしれませんが、適当に補って読んでいただけると幸いです。最初の質問に対する回答まず、最初の質問に対する回答から考えてみます。FFTの入力とする観測データ(データはすべて実数値であるとします。)を得るために要した時間を\(T\)とします。\frac{N}{T}\]になります。この観測データに対してFFTを実行した結果得られるデータは(複素共役になっているナイキスト周波数より後の部分は負の周波数のデータであり、対応する正の周波数のデータが存在しているので、ここでは除外して考えると)、\(\displaystyle\frac{N}{2}+1\)点の周波数領域のスペクトルデータになります(“+1′′はナイキスト周波数成分に相当します)。\frac{1}{T}\]となります。冷静に考えればそれほど難しい話ではないんですが、きれいさっぱり忘れてましたね。(急に質問が来たからということにしておこう...)。気になったので、計算してみる。なんで\(\delta\)関数になるんだっけ?」とか、気になり始めたりして夜も眠れなくなることは以前ほどはなくなった(ベッドをシモンズのやつに交換したので、寝つきが格段に良くなりました。́))のですが、それでも導出方法くらいは思い出しておきたかったので、他のサイトの記事を参考にしつつ、計算してみることにしました。余弦関数のDFTを計算します。t}{N}\right)\](\(j\)は虚数単位)に対してDFTを実行してみます。上式の右辺に登場する\(f_0\)は実際の周波数と周波数分解能の比を表します。\(t\)は観測データの観測間隔を1とした相対的な経過時刻です。前節での議論の通り、観測データを得るために要した時間は周波数分解能の逆数になっているために打ち消し合うので、上記の右辺には直接現れることはありません。(↑の議論は忘れがちになるところです。)すると、変換の結果得られるスペクトルデータ\(X_f\)は以下の式で表されます。t}\)(\(t\)が整数なので1になります。\label{eq:fftfirsteq}\end{eqnarray}と式変形できます。スポンサーリンク(\ref{eq:fftfirsteq})式右辺中カッコ中の各項はともに等比級数になっているので、まず第1項について計算してみます。t}{N}(f_0-f)}}\end{eqnarray}と計算できます。\(f_0\)及び\(f\)は整数なので、上式右辺の分子の値は0となります。\label{eq:deltaf0f}\end{eqnarray}スポンサーリンクとなります。\label{eq:deltaNf0f}\end{eqnarray}となります。\delta_{N-f_0,f})\end{eqnarray}となります。\infty\)とすると、デルタ関数っぽくなりますね。正弦関数のDFT等を計算します。t}{N}\right)\]を計算してみます。\delta_{N-f_0,f})\end{eqnarray}と計算できます。\displaystyle\frac{\pi}{2}\)だけ、負の周波数成分は余弦関数の負の周波数成分を複素平面上で\(\displaystyle\frac{\pi}{2}\)だけ回転したものになっています。\delta_{N-f_0,f}e^{-j\phi})\end{eqnarray}になります。まとめここまで超簡単ではありますが、フーリエ変換、特にDFTを中心におさらいしたことを書きました。最近はfftwみたいな優秀なライブラリがあったりするので、自分でFFTのプログラムを作らなくてもデータを食わせれば計算結果を得ることはできます。計算結果の見方や計算結果に対する解析の方法くらいは頭に入っていないと、また次に急に質問が来た時に対応できないので、おさらいのタイミングとしては悪くはなかったのではないかと思います。この記事は広告の下にあともうちっとだけ続くんじゃ。本記事を書くにあたり、以下のサイトの記事を参考にしました。筆者の皆様方には感謝申し上げます。Plugin)を使ってみる。Plugin)をカスタマイズする。ポータルページを作る。ポータルページを改善する。このウィジェットの背景が黒くなってしまうことがある理由についてはこちらをクリック。AviUtlgimp-2.10.sikuliGIMP-2.10を使ってスクリーンショットを取得するためのSikuliXのスクリプト。SikuliX-2.0.1+GIMP-2.10.10の組み合わせでのみ動作確認を行っています。SolrのDataImportHandlerで7-zipで圧縮されたファイルのインポートをサポートするためのJARファイル。struts2ajaxtestStruts2でAjaxを使用するWebアプリケーションのサンプル。LANを発行するためのスクリプトのサンプル(Fedora用)。8用のNEologd入りkuromojiをビルドするためのパッチ。GROWIの設定とHTTPS経由で接続するための各種の設定。GROWI等のインストール。PCからの音声をBOSEのスピーカーに飛ばしたら臨場感が増した件。httpdをnginxに取り換えてみた。YouTube↓のボタンを押していただくとチャンネルを登録できます。見解等とは一切関係ありません。