- ベストアンサー
white noiseの波のデータ
white noiseという波についての質問です。 white noiseの波のデータをエクセルデータかテキストデータが欲しいのですが、どなたか手に入れられる所をご存知の方いらしゃいますでしょうか?
- みんなの回答 (8)
- 専門家の回答
質問者が選んだベストアンサー
#2のものです。 「スペクトルが一様になりません。」ということですが、念のため私もやってみますと、スペクトルは一様になります。 思うに「一様」とか「白色」とかいう意味を誤解していらっしゃるのでは? 全く平坦なスペクトルを得たいのなら入力データ列の一点だけが有値で他は全てゼロの値とすればいいです。いわゆるデルタ関数。そのフーリエ変換は全くフラットです。こういうスペクトルをイメージしておられるのではないでしょうか。 しかし!!!! 今はノイズつまりランダムな数列を扱っているのですよね。そのフーリエ変換はやはりランダムな凹凸のスペクトル分布です。どこかの周波数が高いとか低いとか起きて当たり前、偶発事象ですから。ところがランダムな数列を新たに発生させて同じことをやるとその周波数は今度は必ずしもピークでもボトムでもなく、ピークやボトムの位置はまた別の周波数になっているでしょう。これを何度もやってスペクトルの平均をとってごらんなさい(やるのはめんどくさいからイメージするだけでも)。回数を重ねるごとにだんだん平坦になります。これが「ホワイトノイズ」です。 念のため、元のデータ列に移動平均を施してそのフーリエ変換をみてください。高周波部分は振幅減少しているでしょう。ホワイトノイズではなくなったのです。
その他の回答 (7)
- vq100mg
- ベストアンサー率62% (17/27)
皆さんの回答に重複するところもありますが、 1)"white" になる為には、時系列の個々の値が独立ランダムに決まっていれば十分です。振幅の分布に関しては、ANo.2さんの一様乱数でもかまいませんし、ANo.3さんのポアソン分布でもかまいません。任意です。時系列の個々の値達に関連がなければ、"white"で、すべての周波数において同じエネルギになります。 2)ガウシアン分布(正規乱数)を得る方法としては、ANo.4さん紹介の、and()+rand()+rand()+・・・ の他に、ANo.5さんの方法も便利です。 NORMSINV(RAND()) とセルに書込むだけのようです。 その他、一様乱数から正規乱数へ変換する有名な手法としては、ボックス・ミューラー法があります。 http://mathworld.wolfram.com/Box-MullerTransformation.html [0,1)の一様乱数の一組の、x,y、に対して sqrt(-2*ln(x))*cos(2*π*y) は平均零、分散1の正規乱数を与えます。セルに書込むのは、 SQRT(-2*LN(RAND()))*COS(2*PI()*RAND()) です。
お礼
ご回答ありがとうございます。 rand()+rand()+rand()+・・・の方法 NORMSINV(RAND())の方法 で波を作り、パワースペクトル解析したのですが、 一様の分布になりません。 何か間違っているのでしょうか…。
- rabbit_cat
- ベストアンサー率40% (829/2062)
#2のお礼を見ると、スペクトルとサンプリング周波数の関係が微妙なんだろうと思います。 とりあえず、ホワイトノイズというのは、全ての周波数でパワースペクトルが一様ということですが、これは、ウィナー・ヒンチンの定理より、自己相関が時間0以外では全て0ということと同値です。 つまり、ホワイトノイズをw(t)と書いたとき、t0≠t1のとき、w(t0)とw(t1)が独立であればいいことになるます。w(t0)の確率分布が正規分布であるか一様分布であるかによらないことは#4さんの仰るとおりです。もっと言えば、w(t0)とw(t1)で従う確率分布自体が異なってもかまいません。 有限のサンプリング周波数でサンプリングする場合は、ナイキスト周波数までは、スペクトルが一定になります。 シミューレーションとかで、あるシステムにホワイトノイズを与えたときの挙動を調べたいといった場合には、対象システムの最も早い周波数のさらに100倍程度のサンプリング周波数でノイズを与えないと、正確な結果が得られません。
お礼
ご回答ありがとうございます。 rabbit catさんがおっしゃるようにシュミレーションであるシステムにホワイトノイズを与えたときの挙動を調べたいんです。 これまでホワイトノイズなどに関係するような分野ではなかったので、ホワイトノイズをシュミレーションするときにどうやって作ればいいのかがわからなかったのです。
- hitokotonusi
- ベストアンサー率52% (571/1086)
使えるかどうか分かりませんが、エクセルなら分析ツールで一様、ガウシアン、ポアソンなどの乱数を発生させることができます。(Excel2000しか知りませんが、多分、新しいバージョンでも・・・・) 一度試してみては?
お礼
ご回答ありがとうございます。 試してみます。
- imoriimori
- ベストアンサー率54% (309/570)
私の理解するところでは。。。 まず第一に 確率密度分布がどうであるか(ポワソン or ガウシアン or 矩形一様 or その他)と、スペクトルが白色か否かとは別の話です。 エクセルのrandが発生する乱数は矩形一様ですが、矩形一様であっても、そのスペクトル(フーリエ変換)は特にどのへんの周波数で強大とか微弱とかいうことはなく、白色となります。 矩形一様は自然界にあまり見あたらないので、それっぽい乱数が欲しいならガウシアンが手頃かと思います。最も自然界にあるっぽいものといえばポワソンがいいかもしれませんが、めんどくさいです。それに多くの場合本質的現象はポワソンであっても大数近似で結局ガウシアンで扱うことが多いです。。 矩形一様乱数の加算でほぼガウシアンを作れます(中央極限定理)。例えば#2様のB列をrand()+rand()+rand()+rand()+rand()+rand()-3 とかにすればほぼガウシアン分布になります。 第2に 次にご質問でお求めの「白色」の「波」ということですが、ゆるやかな波(不規則だけど波として見えるような)をイメージしたらそれはもはや厳密な意味で白色ではありません。高周波域がカットされている雑音ですから。厳密に白色といえば、周波数帯域∞です。ところがこのような白色雑音は自然界はおろか人工現象にも存在しません。周波数帯域∞ということはエネルギー∞、あり得ないのです。 最後に そういう厳密な白色雑音は要らないのだ、波っぽいものが欲しいのだ、ということでしょう。ならば#1様や#2様の言われるようにエクセルで乱数を並べ、その乱数列を軽く平滑化(running smoothing)してグラフ化してごらんなさい。「帯域制限された白色雑音」(変な言い方ですが)の波が見えるはずです。こういう波が欲しいのではないのでしょうか。 このやりかたで作った「白色雑音の波」はフーリエ変換すると高域がちょっと不自然に見えるかも知れません。もっと自然なものが欲しいというのであれば、どのような現象を模擬するものかによりけりで、そのモデルに従い乱数発生や平滑化とか特定周波数域の強調とかをしなければいけないでしょう(それは白色からほど遠い雑音を作ることになりますが)。というよりその現象の実データ例を探すことが最善でしょう。(そもそも地震波は白色なんでしょうか。私には白色からほど遠い波形に見えますが。)
お礼
ご回答ありがとうございます。 imoriimoriさんのおっしゃるようにrand()+rand()+rand()+rand()+rand()+rand()-3とB列に入力し、それをパワースペクトル解析をしたのですが、スペクトルが一様になりません。 なんででしょう…。 また地震波に関しては有名な地震波はインターネットなどで手に入れられるので、ホワイトノイズに関してもそのようなことがあるのかと思って、地震波を例に出しました。地震波が白色というわけではないんです…。
- paddler
- ベストアンサー率53% (176/330)
ホワイトノイズの時系列信号を作るには、Poisson分布に従う乱数を 発生させる必要があります。 ExcelのRAND()関数を単純に使っただけではできませn。 ExcelのRAND()関数は「一様乱数」なので、この乱数系列だけで 作った時系列信号の周波数特性は「ホワイト」にはなりません。 この検証は、先の方のような方法で作成したデータ系列を、同じく Excelに備わっている「フーリエ解析」にかけると一発で分かって しまいます。 Poisson乱数の発生方法は、そう簡単ではありませんが、ウェブ検索 をすると下記のような、Poisson乱数発生アルゴリズムについて書かれた サイトが見つかりますので、」参考にされると良いでしょう。 http://hata.cc/docs/sim/poisson.html
お礼
ご回答ありがとうございました。 参考のページを拝見させていただきます。 読み解ければいいのですが…。
- anisol
- ベストアンサー率48% (146/301)
1さんがおっしゃるように Excelの関数rand()を使えばできます。rand()は0から1までの乱数を返す関数です。 例えばA列を時間軸、B列を振幅軸にしたいなら A列には 0 =A1+1 =A2+1 =A3+1 ・ ・ ・ といったセルをコピー・貼りつけで作り、 B列には =rand()-0.5 =rand()-0.5 =rand()-0.5 ・ ・ ・ といったセルをこれもコピー・貼りつけで作ればいいわけです。 この場合最大周波数0.5 Hz、最大振幅0.5 のホワイトノイズが作れます(時間軸の単位が秒の時)。
お礼
ご回答ありがとうございます。 paddlerさんがおっしゃることを参考にするとrand()を使ってもできないように思えるのですが…。 すべての周波数において同じエネルギーになるのでしょうか?
- hitokotonusi
- ベストアンサー率52% (571/1086)
ホワイトノイズは波ではありません。 たいがいは、擬似乱数を発生させて代用します。 エクセルなら、乱数を発生させるツールがあったと思います。
お礼
ご回答ありがとうございます。 建築の地震波(El centroやTaft等)のようにwhite noiseの波のデータというのは、やはりないのでしょうか…。
お礼
ご回答ありがとうございます。 imoriimoriさんのおっしゃる通り、ホワイトノイズのパワースペクトルはフラットになるのだと思っていました。違うんですね…。 確かに、rand()で作成した波のパワースペクトルはランダムな凹凸のスペクトル分布になりました。これが一様ということなんですね。 これがホワイトノイズのスペクトル分布だったんですね。