前提・実現したいこと
- 時系列データをパワースペクトル密度として図に表示したい
(リンク先の一番下の図ようなものです)
http://hclab.sakura.ne.jp/stress_novice_LFHF.html
- パワースペクトル算出に関して
N=512, サンプリング周波数1kHz
- 時系列データのcsv
csvは下記のような形式です
csv
1time,value 20,561 31,571 42,555 53,547 64,537 75,527 86,530 97,537 108,535 119,531 12(...) 13510,565 14511,566
発生している問題・エラーメッセージ
- 本来ならば、上のリンク先のように、x軸0.2~0.4あたりに山などができるはずなのですが、0付近でy軸が大きい値を示して以降、ほとんど0のままになっています。
- 該当コードで意図したようにパワースペクトル密度推定ができていない気がしています。
該当のソースコード
python
1import numpy as np 2from scipy import signal 3import matplotlib.pyplot as plt 4import pandas as pd 5 6# サンプル数 7n = 512 8dt = 0.001 9# サンプリング周波数 10fs = 1/dt 11 12ds = pd.read_csv('data.csv') 13ds = ds['value'] 14data = [] 15for i in range(512): 16 data.append(ds[i]) 17y = np.array(data) 18 19freq1, P1 = signal.periodogram(y, fs) 20freq2, P2 = signal.welch(y, fs) 21 22plt.figure() 23plt.plot(freq1*0.001, P1, "b", label="periodogram") 24plt.plot(freq2*0.001, P2, "c", linewidth=2, label="nseg=n/4") 25plt.legend(loc="upper right") 26plt.xlabel("Frequency[kHz]") 27plt.ylabel("PSD") 28plt.show() 29
- 出力結果
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
参考

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/01/26 10:11