↑に戻る www.madlabo.com  記述:mad@mail.wind.ne.jp

雑音の作り方
書きかけよ・・・・・・・・・・・・・・・
数理設計研究所 玉置晴朗
2002/04/11 - 2009/12/04
Index

概要

 数値計算する人の間では乱数をそのまま白色雑音とみなしたり、目的に沿わない波形を作ってよしとする傾向がある。数学を知っていると自称するものほど、わざわざ観察しにくい複雑でめんどくさい信号を作っているようだ。
 実物か数値計算かに関わらず、実験の趣旨に見合った信号を用意することができるならば、それにこしたことはない。実験するって事はもともと、実験環境を支配すべきなんだ。そこで、雑音の生成法について考察してみた。
 一般的な解説だけではなく、用途別の生成法を提示する。その生成法ごとに簡単な使い方を例示して解説することを通じて、雑音が現代の電子通信技術の基本部であり、興味深い物だって事をお話できたらいいなと思う。もともとは、SS通信アルゴリズムやLSIの開発の数値計算に使ったものです。

白色雑音

乱数と雑音に直接の対応はない

 まず、最初に述べておかなくてはいけないことがある。乱数と雑音は別物です!。これが一番の誤解の元、ピチピチ跳ねる元気なゴカイだ。だいたい用語が違うのにどうして同じだと思うのだろう?。
 次の振幅や値の予想がつかないからだってことは良くわかる。しかし、乱数と雑音は同じじゃないから別の用語を使うのだ。ところで乱数の解説はしない、ここでは雑音だけ。乱数に言及したときは、それなりに良い乱数だとしておこう。

道具(雑音)の意味を明確に

 実験で雑音が必要だとするならば、実験で雑音を観測したときに、どのように表現して欲しいのかが大事だ。道具ってのはその目的に応じて作り使うのがプロ、アマチュアは不出来な道具で右往左往して悩む。

理想的な白色雑音は存在しない

 まず最初に述べておくべき事がある、自然界でも理論中でも理想的な白色雑音ってのは存在し得ない。その理由を書いておく。
 理想的な白色雑音は
  • ある小さな帯域巾を観察したら一定のエネルギーがある
  • その小さな帯域巾は0〜∞の周波数のどこで観察しても同じエネルギーである
 さて、一定のエネルギーを無限の周波数まで加算したら無限のエネルギーになってしまう。そりゃないぜよ。ってえことは、この定義がおかしいってことだ。

現実的な白色雑音

 定義を書き換えてみよう
  • ある小さな帯域巾を観察したら一定のエネルギーがある
  • その小さな帯域巾は零〜観察上限周波数のどこで観察しても同じエネルギーである
 微妙な問題があるけれど、十分に小さい帯域巾で観察したら、同エネルギーなら同振幅になる。一定のエネルギーを有限の周波数まで加算したら有限のエネルギーになる、これにすれば無理が無い。

 さあ、現実的な定義ができたので現実的な白色雑音を作ってみよう。
 ところで、実験ではこの白色雑音源を何で観察するのかね?、信号源を確認しない実験なんてありゃしない。まずはクリーンな信号を確認してから、その信号を使うのが実験手続きとしては当たり前でしょう?。

 観測したらどこの1Hz帯域巾でも1単位の信号。これが現実的な白色雑音ですね。

作成実験1


 この図は0Hzは零、それ以外は16kHzまで1Hzあたり1単位の絶対値を持つスペクトルです。こんな振幅が観測できたら、これを白色雑音と言っていいでしょう。
 スペクトルを求めるには信号をフーリエ変換しますね、ではスペクトルから元の信号を求めるには・・・そう、逆フーリエ変換すればいいんです。やってみましょう。手順は
  1. スペクトルの零は0、ここはDCだから0
  2. その他の1Hz毎に実数として1(=振幅)
  3. 逆フーリエ変換
 さて、どうでしょう。波形は

 おかしいですね。期待した雑音とは違うようです。良く見ると、時間軸0のところで32768の値があり、他は全て0。つまり、これはインパルス信号なのです。でもね、これも白色雑音には違いない。最初に「乱数と白色雑音に直接の関係は無い」と言ったのはこのことなんです。事実この信号をフーリエ変換してスペクトルを見てみると。

 ちゃんと元に戻ります。

作成実験2

 作成実験1で白色雑音にはなりましたが、期待するランダムな信号にはなりませんでした。つまり、期待する最初の定義が不十分だったってことです。インパルス信号になってしまったのは周波数領域の位相がゼロで揃っていたからです。じゃあ揃わないようにすればよい・・・・・条件を追加してみました。
  • ある小さな帯域巾を観察したら一定のエネルギーがある
  • その小さな帯域巾は零〜観察上限周波数のどこで観察しても同じエネルギーである
  • 周波数領域の絶対値は同じでも位相が違う
 これがお望みでしょう。作成例1で波形は0時間に集中して値を持ちました。これを時間軸に分散させればいいんです。そのために単に振幅ではなく、位相も含めてみましょう。手順は
  • スペクトルの零は0、ここはDCだから0
  • その他の1Hz毎に実数として1(=振幅)
  • 振幅だけではなく、位相はランダム
  • 逆フーリエ変換
書きかけよ・・・・・・・・・・・・・・・

一様乱数

 0-1の間とか、任意の数値範囲の中心に多いとか、そんなことではなく、範囲内なら次の値はどこになるか、予測がつかないものを一様な乱数と言う。頻度表を作るとだいたいどこも同じ数が出てくるし、目いっぱいたくさん勘定すればどの値も同じになるはずだって乱数。 
 乱数そのものを波形として使うのではなく。周波数表現において、振幅一定、均等乱数による任意位相から実波形に逆フーリエ変換されたものとなる。このとき周波数巾ごとに一定の強度を持つ白色雑音となる。

帯域制限雑音

 乱数そのものを波形として使うのではなく。周波数表現において、振幅が帯域によって規定され、均等乱数による任意位相から実波形に逆フーリエ変換されたものとなる。このとき周波数巾ごとに帯域制限されたピンク雑音となる。

参考

MathCADの関数

MCADの共役表現、これをコピーして使えば楽 kyouyaku.mcd

..end