ノイズ、パワー スペクトル密度 (PSD)、および統計的分散について詳しく学ぼうとしています。これに関して、私はホワイト ノイズのパワー スペクトル密度を計算しようとしていますが、そうすると非常に奇妙な対称性が得られます。私のスペクトルは中心周波数値を中心に対称であるように見えますが、これは明らかに正しくありません。私は自己相関とパワースペクトル密度を使用するのが初めてなので、誰かがエラーの方向に私を微調整するのを手伝ってくれるとありがたいです.
PSD を計算するコード:
import numpy as np
from math import sin, pi, log10
from allan_noise import white,pink,brown, violet
import acor
import numpy as np
#METHOD ONE: AUTOCORRELATION FUNCTION METHOD
def psd1(time_dats):
#auto_corr = acor.function(time_dats)
auto_corr = np.correlate(time_dats,time_dats,mode="same")
#To check autocorrelation
for i in range(len(auto_corr)):
print i*.0000001 ,auto_corr[i]
return fft(auto_corr)
#DEFINE VARIABLES
t = .0001 #simulation time
N = 100000 #number of data points
dt = t/N #time interval between data points
#CREATE SIGNAL
sig = white(N)
df = 1.0/(t)
freq_axis = np.arange(0,N/t,df)
spec = psd1(sig)
#OPEN UP OUTPUT FILE
f = open('data/psdtest_f','w')
g = open('data/psdtest_t','w')
#PRINT OUT DATA
for i in range(N):
f.write('%g %g\n' %(freq_axis[i],log10(abs(spec[i]))))
g.write('%g %g\n' %(i*dt, sig[i]))
このコードを使用して、 https : //drive.google.com/#folders/0B8BdiIhqTYw7Vk1EaDFMQW84RHMからアクセスできる次のグラフを生成します。
計算前のノイズの時間プロファイル
時間プロファイルから計算された自己相関関数 (x 軸のスケールが間違っていることは認識していますが、他の場所のコードには寄与しません)
Power Spectral Denisty、美しく左右対称ではありませんが、
この対称性の原因について誰かが提供できる助けがあれば、最も役に立ちます。単純な正弦波信号でコードをテストしたところ、期待どおりの結果が得られました (対称性なし)。