0

ここに画像の説明を入力私の問題に続いて:時系列を計算することに基づいて、PSDの理論モデルがあります。この時系列は、いくつかの変更の後、PSD に逆変換されます。残念ながら、元の PSD は戻ってきませんが、わずかに異なるものであり、その理由はわかりません...

これが私の例示的なコードです:

import numpy as np
from scipy import fftpack
import matplotlib.pyplot as plt

bins = [1,2,3,4,5,6] #spots in the frequency domain
PSD = [7,8,7,10,6,3]
plt.loglog(bins, PSD)

t = np.linspace(0,1,2**9, endpoint = 'false')
signal = np.zeros_like(t)

for i in range(6):
signal += np.sqrt(PSD[i]) * np.cos(2*np.pi* t * bins[i] + random.uniform(0,2*np.pi))

n = signal.size
timestep = t[1]-t[0]
freq = np.fft.fftfreq(n, d=timestep)
freq = freq[:freq.size/2]
PSD_from_timeserie = abs(scipy.fftpack.fft(signal)/ n * 2)**2
PSD_from_timeserie = PSD_from_timeserie[:PSD_from_timeserie.size/2]
plt.loglog(freq, PSD_from_timeserie, 'x') 
plt.show()

簡単にチェックアウトできるので、これはほぼ正しいPSDを提供します...間違いがどこにあるかについての提案はありますか?

4

1 に答える 1

0

問題が解決しました!

そうでなければならない

t = np.linspace(0,1,2**9, endpoint = False)

大文字と '... unfo numpy はエラーをスローしませんが、このように動作します;)'

于 2013-10-10T19:26:42.333 に答える