前提・実現したいこと
Pythonでデジタル信号のフーリエ変換に試みています。
発生している問題・エラーメッセージ
https://org-technology.com/posts/smoother.html
↑こちらに示されているサンプルを元に自分のデータで解析しようと考えているのですが、「周波数スケール」や「データ数」を自分のデータの場合、どのように置き換えればよいのかわからないでいます…。
また、フーリエ変換をする際に
yf = fftpack.fft(y)/(n/2)
で、なぜn/2で割るのかがよくわかりません。
y2 = np.real(fftpack.ifft(yf2)*n)
では逆変換では逆にnをかけているのも少し疑問です。
ちなみに一般的な数学や物理の参考書には目を通しており、基本的なフーリエ変換の原理は理解しているつもりです。
該当のソースコード
python
1import os 2import time 3import numpy as np 4from scipy.stats import norm 5from scipy import signal 6import matplotlib.pyplot as plt 7 8os.chdir(r"C:\Users\genuine\Desktop\earth science\20180217~misasa\20180224b") 9files = os.listdir(r"C:\Users\genuine\Desktop\earth science\20180217~misasa\20180224b") 10 11t1 = time.time() 12 13dat_list = [] 14for file in files: 15 if file.count('.dat'): 16 dat_list.append(file) 17 18ampl_list = [] 19for file in dat_list: 20 data = np.loadtxt(file, delimiter=' ') 21 x_value = data[:,0] #1列目を横軸とする 22 y_value = data[:,1] #2列目を縦軸とする 23 yh_value = signal.hilbert(y_value) 24 count = abs(yh_value) 25 26 sum = 0 27 for i in count[12000:13600]: 28 sum = sum + i 29 mean = sum/1600 30 ampl_list.append(mean) 31 32x_axis = np.arange(800, 900.1, 0.2) 33y_axis = np.array(ampl_list) 34plt.plot(x_axis, y_axis, marker="", linewidth=0.2, color='black') 35plt.show() 36 37np.save('ampl_list.npy', y_axis) #.npyで保存する 38 39t2 = time.time() 40proceeding_time = t2 - t1 41print('処理時間'+str(proceeding_time))
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
x_axis = np.arange(800, 900.1, 0.2)
からお分かりかと思いますが、私が解析を試みているのは501個のデータ点からなるグラフのフーリエ変換です。
python 3.6.1
numpy 1.12.1
scipy 0.19.0
matplotlib 2.0.2
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/05/01 06:38
2018/05/01 06:41