情報通信システム(3) http://www10. plala. or 情報通信システム(3) http://www10.plala.or.jp/katofmly/chiba-u/ 2016年5月10日 火曜日 午後4時10分~5時40分 NTT-IT Corp. 加藤 洋一
FFTの例 フーリエ級数(三角関数版→指数関数版) →フーリエ変換→標本化定理(ナイキスト定理,サンプリング定理,ともいう) →ディジタルフーリエ変換→高速ディジタルフーリエ変換(FFT) WaveSpectra 波形表示部(縦軸は振幅,横軸は時間) 周波数成分表示部(縦軸は振幅,横軸は周波数)
フーリエ級数まとめ(前回の講義) 周期的に繰り返す信号は、その繰り返しの周波数(基本周波数)の整数倍のサイン波とコサイン波の全てに重みをかけたものの和に展開できる。 t T/2 3T/2 -T/2 0 -3T/2 T 1 基本周波数= 繰り返しの周期T 1周期の平均値a0 重みb1と基本周波数のサイン波をかける 重みa1と基本周波数のコサイン波をかける 重みb2と2・基本周波数のサイン波をかける 重みa2と2・基本周波数のコサイン波をかける 重みb3と3・基本周波数のサイン波をかける 重みa3と3・基本周波数のコサイン波をかける : 全て加える :
フーリエ級数(前回の講義)
周期的信号の複素フーリエ級数(前回の講義) 強度 f(t) (周期的)信号 時刻t 周波数n/Tのサイン波 T 強度 c(n) n/T 基本周波数のn倍の周波数 複素フーリエ級数の場合のcnは、その絶対値が振幅、偏角が初期位相を表す。 基本周波数=1/T フーリエ級数では、「元の信号が周期的信号である」という条件がある。この条件がはずせれば、適用範囲が広がる。 フーリエ変換
フーリエ変換 c0 cn c2 c1 cn+1 ・・・・・・・・・ ・・・・・・・・・ 周波数 f0 2f0 3f0 ・・・・・・・・・
フーリエ変換 c0 cn c2 c1 cn+1 ・・・・・・・・・ ・・・・・・・・・ 周波数 f0 2f0 3f0 ・・・・・・・・・
T0を無限大にするということは… t 3T/2 5T/2 T/2 0 -T/2 T フーリエ変換では信号は周期的である必要はない
フーリエ逆変換
フーリエ変換対 フーリエ変換 信号の強度(振幅) 周波数成分の大きさ(複素数) フーリエ逆変換 f(t) F(f) t f 時間 周波数
フーリエ級数 フーリエ変換 フーリエ級数とフーリエ変換の違い 対象は周期関数(信号) T→∞としたので、対象は周期関数に限らない 変換結果(フーリエ係数)Cnは離散的( Cnは数列であり、連続量ではない) 変換結果は連続で、周波数の関数となる。 さて、フーリエ級数も、フーリエ変換もこのままでは、実際の役には立たない(これは極論です。理論的な解析には役に立ちます)。というのは、実際に観測する信号 f(t)は初等関数で表されるようなものではないので、積分が簡単には計算ではできないからです(「アナログコンピューター」というのもあることはありますが。。。)。 「使える」形のフーリエ変換は、ディジタル計算が行える「離散フーリエ変換」です。離散フーリエ変換にたどり着くまで、もう少しの辛抱、です。
補足:マイナスの周波数? 三角関数では、どちらも同じに見える。 指数関数では、マイナスの周波数は回転が逆 t t -1Hz 1Hz
フーリエ変換の例題(1) f(t) ステップ関数:時刻-0.5から0.5までの間だけ値が1、その他の期間は値が0 t F(f) f 1 0.75 0.5 0.25 f -10 -5 5 10 時間的には、有限時間(-0.5 =< t =< 0.5)にしか存在しない(0ではない)f(t)が、無限に続く無数の周波数の波から成り立っている、ということになる。 フーリエ級数のときの結果と比較 fourier1.gcd: Step Shape
フーリエ変換の例題(2) F(f) 周波数が0.5より上では値が0、ということは、「帯域制限」されている、ということである。 f f(t) 1.5 1.25 1 0.75 0.5 周波数が0.5より上では値が0、ということは、「帯域制限」されている、ということである。 0.25 f -1 -0.5 0.5 1 f(t) t 周波数帯域は制限されているが、信号は無限の時間存在する (「信号が無限の時間存在する」。。なんだか「無理」がありそうな感じですね。。。)
フーリエ級数やフーリエ変換は、信号の時間領域での表現を、周波数領域での表現に変える変換 時間領域と周波数領域 信号の時間領域での表現 信号の周波数領域での表現 t f(t) 信号強度 周波数成分の大きさ F(f) 1 0.75 0.5 時間 周波数 0.25 f -10 -5 5 10 フーリエ級数やフーリエ変換は、信号の時間領域での表現を、周波数領域での表現に変える変換 両者は同じ現象を異なる視点で見ているだけ(逆変換可能な変換である) 信号強度と周波数成分の大きさは複素数
人間の耳は「位相」を聞き分けることができるか? ちょっと息抜き 人間の耳は「位相」を聞き分けることができるか? 近接した2つの周波数のサイン波を同時に鳴らすと? WaveGenを使って実験します。
標本点の間の値は保存しなくても大丈夫なのだろうか?上記の例では、標本点を「滑らかに」つないでいけば元の波形になるように見える。 標本化定理 標本化間隔 アナログ信号 ディジタル信号 標本化 時間 時間 標本点の間の値は保存しなくても大丈夫なのだろうか?上記の例では、標本点を「滑らかに」つないでいけば元の波形になるように見える。 時間 時間 しかし、上記の例ではうまくいきそうにない。
標本化定理(サンプリング定理)の導出 周波数 -W W 周波数制限された信号を考える。つまり、-W<f<W以外の区間では、 F(f)は0。本来はF(f)は複素数だが、上図は便宜上実数のように書いてある。 さらに、便宜的に、 F(f)は、周期2Wで繰り返すとする(下記)。 便宜的に繰り返した部分 便宜的に繰り返した部分 -3W -W W 3W この関数をフーリエ級数で展開する(普通、フーリエ級数は、時間領域の信号を対象にする。周波数領域の関数であるF(f)をさらにフーリエ級数で展開する、というのはちょっと奇妙な感じだが、もちろん、数学的には問題ない)。
標本化定理(サンプリング定理)
標本化定理(サンプリング定理) 不要
標本化定理(サンプリング定理) 最大の周波数成分が WHz に制限されている信号 fw(t) を時間間隔 1/2W でサンプルした場合、そのサンプル系列(つまりディジタル信号)から元の 連続信号 fw(t) を完全に再現できる。 例:人間が聞くことができる音の周波数は、20Hzから20KHzといわれている。音楽CDでは、44.1KHzで音楽をサンプルし、ディジタルデータとして保存している。即ち、2W=44.1KHzなので、W=22.05KHzとなる。理論的には、音楽CDは22.05KHzまでの周波数を含む信号を完全に再生できる(もちろん実際には理論どおりにはいかないので、大体20KHz程度までの音を再生できるようである)。 ところで、 1/44.1KHz=22.676マイクロ秒。即ち、音楽CDは連続信号である音楽を22.676マイクロ秒ごとにサンプルし、そのサンプル値のみを保存している。
標本化定理(完全再現の方法)
標本化定理(完全再現の方法) Gcalcで確認 標本化定理が成立するには、元の信号が周波数Wに制限されている必要がある。この条件は、一般的な音声信号、音楽信号、映像信号では普通に達成できる。たとえば、音楽の場合、人間の耳に聞こえる周波数の最大値は決まっているなど。 標本化定理は、アナログ信号とディジタル信号の関係を規定する最も重要な法則である。 サンプリング定理,ナイキストの定理,とも呼ばれています
標本化定理(完全再現の確認) 信号のグラフと、サンプル値から再生された信号のグラフは、両端を除き、よく一致している。両端のさらに外側では信号値は0と考えられるが、そこで、「急に」値が変化するため、W以上の周波数成分が存在する。このため、両端ではうまく再生できないこととなる。 (Sampling.demをgnuplotで表示)
標本化定理(完全再現ができない場合) W=100Hzにもかかわらず、上記信号は120Hzの成分を含んでいる。この場合は、再生信号とオリジナル信号との誤差が大きくなることがわかる。
今回の講義でも使いましたが、教材としてPythonという言語で書いたプログラムを用います。 予習のお願い 今回の講義でも使いましたが、教材としてPythonという言語で書いたプログラムを用います。 Pythonは、最初に学習するプログラミング言語として最適といわれています。 Pythonに関する説明をしようと考えています。そこで、皆さんもPythonの処理系を自分のPCにインストールし、できれば、予めいろいろ試してください。 PythonのWindows版のダウンロードURLは、本講義のホームページにあります。
標本化した信号の数学的取り扱いについて (Diracのデルタ関数という) 標本化 t t 連続信号なので積分ができる このままでは、積分ができない。 そこで、 (Diracのデルタ関数という) として、f*(t)を標本化された信号列を表す関数とする。f(nT)は数値の列(ディジタル)であるが、 f*(t)は(一応)連続関数であることに注意。各サンプルにそれぞれデルタ関数をかけたものの総和になっている。
標本化した信号の表現方法について 積分してみると、 t f(t)の積分(斜線の面積) 間隔=T t f*(t)の積分(長方形の面積の合計) 両方とも大体同じ値になる。
離散フーリエ変換(DFT) 周期的(と仮定した)なディジタル信号を扱います n=N-1 t n=0 n=1 これは含まない(次の周期の最初のサンプル) n=N-1 t 時刻 N個のサンプル 繰り返しの周期 N T n=0 n=1 T の意味が変わった。。以前は周期、いまはサンプル間隔 N T サンプリングレート 2W サンプリング間隔 = T = 1 / 2W アナログ的な扱いのための記法
離散フーリエ変換(DFT: Discrete Fourier Transform)
離散フーリエ逆変換(IDFT: Inverse DFT)
離散フーリエ逆変換(IDFT: Inverse DFT) これらの値の総和 N=7
DFTの行列表現
IDFTの行列表現
DFTとIDFTの実験 DFTとIDFTならディジタル計算ができる。いろいろな信号のDFTを実際に計算してみる。 (dft.demをgnuplotで表示) 以上から、実数の信号に対するDFTは、0=<k<N/2だけ計算すればよいことが分かる。