🎵(イントロ音楽)🎵
🎙**ホスト**: こんにちは、皆さん!「計算知能ラジオ」へようこそ!今日は音楽から自然界、さらにはフィナンスまで多くの場面で見かける「1/fゆらぎ」に焦点を当てます。さらに、ホワイトノイズやブラウンノイズとの対比もしていきます。
---
🎙**ホスト**: まずは基本から。ホワイトノイズ、ブラウンノイズ、ピンクノイズ、これらは何が違うのでしょう?ホワイトノイズは各周波数で均等なエネルギーを持っています。一方で、ブラウンノイズは低周波数が強調され、高周波数が弱まります。そして、ピンクノイズ、または1/fゆらぎは、ホワイトノイズとブラウンノイズの中間に位置します。
---
🎙**ホスト**: 自然界での例を挙げると、1/fゆらぎは地球の地殻変動、川の流れ、星の光度変動、さらには交通流や株価の変動にも見られます。心拍数や神経活動、音楽のリズムにも1/fゆらぎが見られることが多いですね。
---
🎙**ホスト**: それでは、Pythonコードでこれらのゆらぎをシミュレートしてみましょう。
import numpy as np
import matplotlib.pyplot as plt
# 1/fゆらぎ(ピンクノイズ)のパワースペクトルを生成する関数
def generate_pink_noise(N, fs):
f = np.fft.fftfreq(N,
1/fs)
f = f[:N//2]
S = 1 / np.abs(f[1:])
S = np.concatenate([[0],
S])
# 位相をランダムに設定
phi = np.random.uniform(0,
2*np.pi, len(S))
# 振幅と位相から複素スペクトルを生成
X = np.sqrt(S) *
(np.cos(phi) + 1j * np.sin(phi))
# 複素共役を追加して逆フーリエ変換
X = np.concatenate([X,
np.conj(X[-1:0:-1])])
x = np.fft.ifft(X).real
return x
N = 1024 # サンプル数
fs = 1024 # サンプリングレート
# パワースペクトルの可視化
plt.figure()
f = np.fft.fftfreq(N, 1/fs)
f = f[:N//2]
S = 1 / np.abs(f[1:])
S = np.concatenate([[0], S])
plt.loglog(f, S)
plt.title('1/f Power Spectrum')
plt.xlabel('Frequency (Hz)')
plt.ylabel('Power')
plt.grid(True)
# 位相を適当に調整して、5つの1/fゆらぎを持つ波形を生成
plt.figure()
for i in range(5):
x = generate_pink_noise(N,
fs)
plt.plot(x,
label=f"Waveform {i+1}")
plt.title('1/f Noise Waveforms with Random Phases')
plt.xlabel('Sample')
plt.ylabel('Amplitude')
plt.legend()
plt.grid(True)
plt.show()
---
🎙**ホスト**: コードを実行すると、最初に1/fゆらぎのパワースペクトルが表示されます。次に、5つの異なる1/fゆらぎを持つ波形が表示されるでしょう。これは位相がランダムに変更されていますが、すべて1/fゆらぎの特性を持っています。
---
🎙**ホスト**: ホワイトノイズやブラウンノイズとの対比も是非行ってみてください。ホワイトノイズは各周波数に均等なエネルギーがあり、ブラウンノイズは低周波数が強くなります。これらの違いは、パワースペクトルで非常に明らかです。
---
🎙**ホスト**: 今回も新しい発見や洞察が得られたことを願っています。1/fゆらぎが私たちの周りにどれだけ広く存在するか、驚くことでしょう。
---
🎙**ホスト**: それでは、次回も「計算知能ラジオ」でお待ちしています。さようなら!
🎵(アウトロ音楽)🎵
告知リンク:
https://www.youtube.com/playlist?list=PLPiQ8tB0Q233SUXcAh_FkCzNS51aN48Ud
https://youtu.be/gP7jjWApgHA
https://www.kogakuin.ac.jp/admissions/event/oc.html
https://www.kogakuin.ac.jp/science/
https://wcci2024.org/